そのようなことをすることは可能ですか:
ArrayList arl = new ArrayList();
arl.Add(1);
arl.Add("test");
int[,] tab = new int[4, 4];
init(tab);
arl.Add(tab);
さまざまなタイプのオブジェクトを含めることは可能ですか (JavaScript や Lua など)? (C#)
はい、可能です。ArrayList は、object
任意の型を挿入できることを意味する型のコレクションを格納します.NET
。
本当に使うべきList<T>
です。例えば:
List<int> listIntegers = new List<int>();
listIntegers.Add(1);
を使用することもできList<object>
ますが、リスト内のすべてのアイテムをアンボックスする必要があります。これにより、パフォーマンスの問題が発生する可能性があります。
はい、ArrayList にはオブジェクト型の要素が含まれているため、すべてをその中に入れることができます。再度取得するときは、ケースを元のタイプに戻すことができます。もちろん、このキャスティングのせいで効率が落ちます。
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>();
あなたの質問に関しては、 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よりも使用することを好みますが、それは私の個人的な好みにすぎません
はい、型チェックを行わないため可能です。参照型を使用する場合はよりも高速な場合がList<T>
ありますが、完全に優れた型安全な代替手段がある場合は、一般的に使用することはお勧めしません。
から継承する任意の型をobject
に格納できますArrayList
。の項目にアクセスするときは常にArrayList
、正しい型にキャストするように注意する必要があります。そうしないと、コンパイラ エラーが発生します。
ArrayList
.Net のジェネリック型の前の時代からの古い遺物だと思います