2009-08-20 7 views
1

J'ai un arraylist qui a une structure de données de classe.aide à parcourir une liste complète d'objets en utilisant une boucle "for"

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

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

bar.add(records); 

maintenant si je veux accéder aux éléments que je peux utiliser

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

cela me permet d'imprimer les valeurs dans ma classe.

Je ne sais pas comment faire ce travail en utilisant une boucle for.

Mon but final étant de parcourir l'arraylist et de trouver des enregistrements d'employés et de modifier certaines des valeurs. Par exemple, si employeeNum est égal à l'identifiant de position précédent de employeeNum et change l'identifiant de position.

+0

Si vous utilisez .Net Framework 2.0 ou version ultérieure, vous devez probablement utiliser la liste au lieu de ArrayList pour éviter la diffusion. –

+0

@molocules: vouliez-vous dire que votre nom était "molécules", c'est-à-dire un groupe d'atomes réunis? –

+0

En fait, c'est une blague en cours. Il y a plusieurs lunes, j'ai accidentellement tapé "molocules" comme une étiquette de joueur. Je l'ai gardé depuis. ahhhhhhh nostalgie. –

Répondre

5

Je suppose que vous voulez vraiment dire ArrayList

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

vous devriez vraiment utiliser List<T> mais comme il est générique et vous offre-sécurité de type.

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

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

@Stan: la règle des backticks. –

+0

Je devrais vraiment faire plus attention au côté droit de mon écran où la référence de formatage est. Merci d'avoir réparé John. –

+0

ne me donne toujours pas les valeurs réelles. juste dit emprec –

3

Pour faire le même travail de chose en utilisant une boucle, vous pouvez effectuer les opérations suivantes

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

Remplacer UnType avec le type réel de l'élément de la collection.

+0

empRec semble être le type. – Jimmy

0

Vous devriez être en mesure de faire quelque chose de semblable à ce qui suit:

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

Vous pourriez envisager de passer d'un ArrayList à un List générique si vous le pouvez. Cela vous permettra de spécifier un type dans la liste, ce qui non seulement nettoie votre code et permet à intellisense de faire son travail, mais il a aussi des avantages en termes de performances. Si la liste contient des objets d'un type spécifié, vous n'avez plus besoin de convertir ce type dans votre boucle.

Questions connexes