web-dev-qa-db-ja.com

Java特定のインデックスの取得、設定、削除をサポートするarraylistに相当するC#

私はJavaプログラマーです、以前はJava ArrayListを使用していましたが、今は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#ArrayListLinkedListを使用しましたが、必要なこれらの単純なオプションがありません。インデックスを持つオブジェクトへのアクセス、特定のインデックスへの挿入と削除をサポートするC#の別のオプションはありますか?

16
sajad

_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に入力する要素はボックス化する必要があります(ArrayListが入力として受け取るのはObjectだけなので)。その後アクセスしたい場合は、質問で行ったように、明示的にボックスを解除する必要があります。 (-> String s = (String) arrayList.get(1);

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

23
Thousand

List<T>..........................................を使用します。

これには、AddRemovelist[i]などのRemoveAtインデクサーがあります。

1
L.B