.net - для каждого объекта в качестве объекта MyObject в MyArray & # 8212; Это выполнимо без реализации чего-либо?

StackOverflow https://stackoverflow.com/questions/1620186

  •  06-07-2019
  •  | 
  •  

Вопрос

Я использую VS2008.

Хорошо ли следующее для создания следующего VB.NET с очень простым классом (см. ниже)?

for each CurrentObject as MyObject in MyArray
  'access current object
next

" простой класс "

Class MyObject
  public I as integer
end class

Кажется, я помню, что что-то нужно для iEnumerable, но мой компилятор не жалуется.

Изменить. Уточнение

Это было полезно?

Решение

Это совершенно нормально.

Внутри .NET есть ваш массив MyArray, реализующий IEnumerable, который и ищет компилятор, когда вы используете цикл foreach такого типа.

Так что вам больше ничего не нужно делать.

Действительно, если MyArray уже объявлен как массив MyObject, вам не понадобится приведение к MyObject, поэтому

Dim MyArray(20) As MyObject
for each CurrentObject in MyArray  
    'access current object
next

всегда будет работать нормально, так как CurrentObject всегда будет иметь тип MyObject.

Приведение приведено в действие только в том случае, если нечего сказать .NET, какой тип содержится в вашем массиве.

Другие советы

For Each работает только для типов, которые реализуют IEnumerable , обычно коллекции. Вы должны знать, что приведение элементов, которое происходит для каждого элемента коллекции, выполняется во время времени выполнения , поэтому, даже если код компилируется, он может завершиться ошибкой при выполнении.

Подробнее об этом можно прочитать в MSDN: For Each ... Next Заявление (Visual Basic)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top