C#クラスでデータ構造体を開始し、検索可能な文字列とintを一緒に参照するarraylist(名前と番号)を作成しようとしています。名前を付けて、それが添付されている名前と番号の両方を取得します。私は構造体のarraylistを使うことができると言われましたが、構造体は一度も使用していません。どのような簡単な説明が、どのように、またはより良い方法ですか?C#で2つのデータ型の検索可能なリストを作成する
ありがとうございます。
C#クラスでデータ構造体を開始し、検索可能な文字列とintを一緒に参照するarraylist(名前と番号)を作成しようとしています。名前を付けて、それが添付されている名前と番号の両方を取得します。私は構造体のarraylistを使うことができると言われましたが、構造体は一度も使用していません。どのような簡単な説明が、どのように、またはより良い方法ですか?C#で2つのデータ型の検索可能なリストを作成する
ありがとうございます。
構造体の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);
}
}
作品は、あなたのコースはかなり古くなっている示唆 - '一覧 'ほぼすべての用途に好まれています2005年にリリースされた.NET 2以降、検索可能なデータ構造を作成したい場合、より明白な「辞書」の代わりにリストを使用するよう指示された理由はありますか? –