2009-08-20 3 views
1

Ich habe eine Arraylist, die eine Klasse Datenstruktur hat.Hilfe Iterieren durch eine Arraylist voller Objekte mit einer "for" -Schleife

public class empRec 
{ 
    public string nuView; 
    public string firstName; 
    public string position; 
} 

empRec records = new empRec(); 
... 
... 

bar.add(records); 

jetzt, wenn ich die Elemente zugreifen möchten, kann ich

foreach(empRec foo in bar) { ... } 

verwenden diese mir erlaubt, die Werte in meiner Klasse auszudrucken.

Ich weiß nicht, wie dies mit einer for-Schleife funktioniert.

Mein Endziel ist es, die Arraylist zu durchlaufen und Mitarbeiterdatensätze zu finden und einige der Werte zu ändern.

Zum Beispiel, wenn employeeNum gleich der vorherigen employeeNum ist, überprüfen Sie die Positions-ID und ändern Sie die Positions-ID.

+0

Wenn Sie .Net Framework 2.0 oder höher verwenden, sollten Sie wahrscheinlich die Liste anstelle der ArrayList verwenden, um eine Umwandlung zu vermeiden. –

+0

@molocules: Meintest du, dein Name sei "Moleküle", was bedeutet, dass ein Haufen Atome zusammengesetzt ist? –

+0

Eigentlich ist es ein fortlaufender Witz. Vor vielen Monden habe ich "molocules" versehentlich als Gamer-Tag getippt. Ich habe es seitdem behalten. ahhhhhhh Nostalgie. –

Antwort

5

Ich gehe davon aus Sie wirklich ArrayList bedeuten

for(int i=0; i < bar.Count; i++) 
{ 
    empRec foo = bar[i] as empRec; 
} 

Sie wirklich List<T> jedoch verwenden sollten, wie es generisch ist und liefert Ihnen Typsicherheit.

List<empRec> bar = new List<empRec>(); 
bar.Add(yourItem); 
. 
. 
. 

for(int i=0; i < bar.Count; i++) 
{ 
    empRec foo = bar[i]; 
} 
+1

@Stan: Backticks Regel. –

+0

ich sollte wirklich mehr Aufmerksamkeit auf die rechte Seite meines Bildschirms, wo die Formatierung Bezug ist. Danke, dass du es repariert hast, John. –

+0

gibt mir immer noch nicht die tatsächlichen Werte. sagt nur empres –

3

Um die gleiche Arbeit mit einem for-Schleife zu machen, können Sie die folgenden

for (int i = 0; i < bar.Count; i++) { 
    SomeType empRec = (SomeType)(bar[i]); 
    ... 
} 

Ersetzen Sometype mit dem tatsächlichen Typ des Elements in der Sammlung zu tun.

+0

empRec scheint der Typ zu sein. – Jimmy

0

Sie sollten in der Lage sein, so etwas wie die folgenden Funktionen ausführen:

for (int i = 0; i < bar.Count; i++) { 
    // Do something with bar[i], bar[i-1], whatever 
} 
0

Sie sollten erwägen aus einer Arraylist zu einem allgemeinen List Schalt wenn Sie können.

Damit können Sie einen Typ in der Liste angeben, der nicht nur Ihren Code aufräumt und es ermöglicht, dass Intellisense seine Aufgabe erfüllt, sondern auch Leistungsvorteile hat. Wenn die Liste Objekte eines bestimmten Typs enthält, müssen Sie nicht mehr auf diesen Typ in Ihrer Schleife umstellen.

Verwandte Themen