.net - For Each Obj als MyObject in MyArray - Ist das machbar, ohne etwas zu implementieren?

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

  •  06-07-2019
  •  | 
  •  

Frage

Ich bin mit VS2008.

Ist die folgende OK die folgende VB.NET mit einer sehr einfachen Klasse (siehe unten)?

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

Die "einfache Klasse":

Class MyObject
  public I as integer
end class

Ich scheine, dass etwas über das Müssen IEnumerable zu erinnern, aber mein Compiler beschwert sich nicht.

Edit: Klarstellung

War es hilfreich?

Lösung

Das ist völlig in Ordnung.

Intern hat .NET Array myarray IEnumerable implementieren, das ist, was der Compiler sucht und verwendet, wenn Sie eine foreach-Schleife dieser Art verwendet werden.

So brauchen Sie nicht etwas mehr zu tun.

Ja, wenn MyArray bereits als ein Array von MyObject deklariert wird Sie die Besetzung zu MyObject nicht benötigen, so

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

arbeitet immer ganz gut als CurrentObject immer vom Typ MyObject sein wird.

Sie müssen nur die Besetzung, wenn es nichts zu sagen, was .NET geben Sie Ihre Array enthält.

Andere Tipps

For Each funktioniert nur für Typen, die IEnumerable implementieren, in der Regel Sammlungen. Sie sollten sich bewusst sein, dass das Element gegossen, die für jedes Element der Sammlung geschieht bei Laufzeit getan , obwohl, so dass, obwohl der Code kompiliert, kann es, wenn sie ausgeführt fehlschlagen.

Sie mehr dazu auf MSDN lesen: For Each ... Next Anweisung (Visual Basic)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top