21

私は Java プログラマーです。ArrayList以前は Java を使用していましたが、今は C# でそのようなものを使用したいと考えています。必要なオプションのいくつかは、次の Java コードにあります。

String[] strs = new String[]{"str1" , "str2" , "str3" , "str4"};
ArrayList arrayList = new ArrayList(35);
arrayList.add(strs[0]);
arrayList.add(strs[1]);
arrayList.remove(0);
arrayList.set(0, strs[2]);
String s = (String) arrayList.get(1);

C#ArrayListとを使用LinkedListしましたが、必要な単純なオプションがありません。インデックスを使用してオブジェクトにアクセスし、特定のインデックスから挿入および削除することをサポートする C# の別のオプションはありますか?

4

2 に答える 2

29

使用するList <T>

 String[] strs = new String[]{"str1" , "str2" , "str3" , "str4"};
 List<string> stringList = new List<string>();
 stringList.add(strs[0]);
 stringList.add(strs[1]);
 stringList.RemoveAt(indexYouWantToDelete)     
 String s = stringList[0];

C# の ArrayLists は、ジェネリック以前の時代のものです。C# 2.0 以降、ジェネリック コレクションがあり、List <T>その一例です。この回答のコメントにあるように、ArrayList を使用する場合、ArrayList に入れる要素はボックス化する必要があります ( ObjectArrayList が入力として受け取るのは だけなので)。その後アクセスしたい場合は、質問で行ったように、明示的にボックス化を解除する必要があります。( --> String s = (String) arrayList.get(1);)

ジェネリック コレクション ( などList <T>) を使用すると、コンパイラはリストがどのデータ型で構成されるかを知っているため、ボックス化はもうありません。この場合、ストリングス。List<int>List<char>、またはを使用することもList<whatever>でき、それらに対して同じインデックス作成機能を使用できます。

于 2012-09-09T20:24:50.303 に答える
2

使用List<T>..................................................................

Add RemoveRemoveAtインデクサーなどlist[i]があります。

于 2012-09-09T20:23:35.830 に答える