.net - для каждого объекта в качестве объекта MyObject в MyArray & # 8212; Это выполнимо без реализации чего-либо?
Вопрос
Я использую 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)