2012-02-11 9 views
0

C#クラスでデータ構造体を開始し、検索可能な文字列とintを一緒に参照するarraylist(名前と番号)を作成しようとしています。名前を付けて、それが添付されている名前と番号の両方を取得します。私は構造体のarraylistを使うことができると言われましたが、構造体は一度も使用していません。どのような簡単な説明が、どのように、またはより良い方法ですか?C#で2つのデータ型の検索可能なリストを作成する

ありがとうございます。

+3

作品は、あなたのコースはかなり古くなっている示唆 - '一覧 'ほぼすべての用途に好まれています2005年にリリースされた.NET 2以降、検索可能なデータ構造を作成したい場合、より明白な「辞書」の代わりにリストを使用するよう指示された理由はありますか? –

答えて

0

構造体のArrayListがビットスクエアペグ丸穴であるため、ハッシュのようなものを使用しているはずです。

構造体をcalssと同じように宣言します。

public struct Foo { 
    public String Bar { get; set; } 
    public Int32 Biz { get; set; } 
} 

そして、あなたはどのようなタイプ

var list = new ArrayList(); 
list.add(object); 

ここでの他の問題はArrayListがジェネリックではないということですし、それはあなたを意味しObjectにすべてを投じるだろうと同じように、あなたは、その後の配列リストを作ることができますそれを処理するには、すべてをタイプFooにキャストする必要があります。

var foo = (Foo)list.item(0); 

あなたはListのようなジェネリックリストクラスを使用して、そのタイプを宣言する代わりにハッシュのリストのルートを移動する必要がある場合は、オフにはるかに良いでしょう。リストを検索するためのよう

var list = List<Foo>(); 
var foo = new Foo { Bar = "Hello World", Biz = 1 }; 
list.add(foo); 

彼らは、コードへの迅速かつ読みやすいので、私は、LINQメソッドを使用することを好みます。

var matches = list.Where(x => x.Biz > 1); 

しかし、あなたはそのその後、繰り返しを行うことができない場合は、常にすべての `ArrayList`を使用して

var matches = new List<Foo>(); 
foreach (var foo in list) { 
    if (list.Biz > 1) { 
     matches.add(foo); 
    } 
} 
関連する問題