-4

そのようなことをすることは可能ですか:

ArrayList arl = new ArrayList();
arl.Add(1);
arl.Add("test");

int[,] tab = new int[4, 4];
init(tab);

arl.Add(tab);

さまざまなタイプのオブジェクトを含めることは可能ですか (JavaScript や Lua など)? (C#)

4

5 に答える 5

1

はい、可能です。ArrayList は、object任意の型を挿入できることを意味する型のコレクションを格納します.NET

本当に使うべきList<T>です。例えば:

 List<int> listIntegers = new List<int>();
 listIntegers.Add(1);

を使用することもできList<object>ますが、リスト内のすべてのアイテムをアンボックスする必要があります。これにより、パフォーマンスの問題が発生する可能性があります。

于 2013-03-20T09:38:24.307 に答える
1

はい、ArrayList にはオブジェクト型の要素が含まれているため、すべてをその中に入れることができます。再度取得するときは、ケースを元のタイプに戻すことができます。もちろん、このキャスティングのせいで効率が落ちます。

于 2013-03-20T09:39:15.073 に答える
0

ArrayList これを試してみると、さまざまなタイプを使用できます。

var ary = new ArrayList();

ary.Add("some string");
ary.Add(23.4);
ary.Add(new StringBuilder());
ary.Add("some other string");

次に、次のようにクエリできます。

string[] strings = ary.OfType<string>();
StringBuilder[] stringBuilders = ary.OfType<StringBuilder>(); 
于 2013-03-20T09:49:12.807 に答える
0

あなたの質問に関しては、 yesArrayListにはさまざまなオブジェクトタイプを含めることができます。同じタイプを使用するときに Type へのボックス化とボックス化解除の必要性を回避するために、
Microsoft は通常、代わりに使用することをお勧めします。List<T>object

型の繰り返しパターンがある場合は、カスタム クラスを定義する方が便利 (かつ高速) かもしれません。

protected class arl_items
{
   public string item1 {get; set;};
   public int item2 {get; set;};
   public int[4,4] item3 {get; set;};
}

そして行きます:

List<arl_items> arl = new List<arl_items>();

ただし、値の型にパターンがない場合は、同じであるArrayListため、作成しても意味がないため、 を使用することもできます。List<object>

ところで。List<object>私はArrayListよりも使用することを好みますが、それは私の個人的な好みにすぎません

于 2013-03-20T09:44:46.993 に答える
0

はい、型チェックを行わないため可能です。参照型を使用する場合はよりも高速な場合がList<T>ありますが、完全に優れた型安全な代替手段がある場合は、一般的に使用することはお勧めしません。

から継承する任意の型をobjectに格納できますArrayList。の項目にアクセスするときは常にArrayList、正しい型にキャストするように注意する必要があります。そうしないと、コンパイラ エラーが発生します。

ArrayList.Net のジェネリック型の前の時代からの古い遺物だと思います

于 2013-03-20T09:39:00.623 に答える