.net - For Each Obj als MyObject in MyArray - Ist das machbar, ohne etwas zu implementieren?
Frage
Ich bin mit VS2008.
Ist die folgende OK die folgende VB.NET mit einer sehr einfachen Klasse (siehe unten)?
zu tunfor 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
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)