2009-08-20 6 views
1

私はクラスデータ構造を持つarraylistを持っています。私は要素にアクセスしたい場合は"for"ループを使用してオブジェクトの完全なarraylistを反復するのに役立ちます。

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

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

bar.add(records); 

今私はこれは私が私のクラスに値をプリントアウトすることができます

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

使用することができます。

forループを使ってこの作業を行う方法がわかりません。

私の最終目標は、arraylistをトラバースし、従業員の記録を見つけていくつかの値を変更することです。

たとえば、employeeNumが以前のemployeeNumのチェック位置IDと等しい場合は、位置IDを変更します。

+0

.Net Framework 2.0以降を使用している場合は、おそらくCastListを避けるためにArrayListの代わりにList を使用する必要があります。 –

+0

@molocules:あなたの名前は「分子」であることを意味しましたか? –

+0

実際それは進行中の冗談です。多くの月前に私は誤ってゲーマータグとして「モロキュレ」とタイプしました。私はそれ以来それを守ってきました。ああ、懐かしい。 –

答えて

5

私はあなたが実際にそれがジェネリックで、型の安全性を提供しますと、あなたが本当にしかしList<T>を使用する必要がありますArrayList

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

を意味すると仮定しています。

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

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

@Stan:バックティックルール。 –

+0

私は本当にフォーマット参照がある私の画面の右側にもっと注意を払う必要があります。それをJohnに任せてくれてありがとう。 –

+0

はまだ私に実際の値を与えていません。ただemprecと言う。 –

3

forループを使用して同じことを動作させるためには、次の

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

は、コレクション内のアイテムの実際の型とSomeTypeを交換して行うことができます。

+0

empRecがタイプのようです。 – Jimmy

0

次に似何かを行うことができるはず:

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

あなたはあなたができる場合は、一般的なListへのArrayListからの切り替えを検討することがあります。

これにより、コードをクリーンアップし、Intellisenseの仕事を可能にするだけでなく、パフォーマンス上の利点もあります。 Listに指定された型のオブジェクトが含まれている場合、ループ内のその型にキャストする必要はありません。

関連する問題