.net - Para Cada Obj como MyObject em MyArray - É este factível sem implementar alguma coisa?

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

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu estou usando VS2008.

É o seguinte OK para fazer o seguinte VB.NET com uma classe muito simples (veja abaixo)?

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

A "classe simples":

Class MyObject
  public I as integer
end class

Eu me lembro de que algo sobre a necessidade de IEnumerable, mas meu compilador não está reclamando.

Editar: Clarificação

Foi útil?

Solução

Esta é completamente bem.

Internamente, NET tem sua matriz MyArray implementar IEnumerable, que é o que os olhares do compilador para e usos quando você usa um loop foreach deste tipo.

Assim você não precisa fazer mais nada.

Na verdade, se MyArray já está declarado como uma matriz de MyObject você não vai precisar do elenco para MyObject, então

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

sempre funciona muito bem como CurrentObject será sempre do tipo MyObject.

Você só precisa o elenco se não há nada para dizer .NET que digitar sua matriz contém.

Outras dicas

For Each só funciona para tipos que implementam IEnumerable, geralmente coleções. Você deve estar ciente que o elenco artigo que acontece para cada elemento da coleção é feito em tempo de execução , embora, por isso mesmo que os compila o código, ele pode falhar quando executado.

Você pode ler mais sobre isso no MSDN: For Each ... Next Statement (Visual Basic)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top