私は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#ArrayList
とLinkedList
を使用しましたが、必要なこれらの単純なオプションがありません。インデックスを持つオブジェクトへのアクセス、特定のインデックスへの挿入と削除をサポートするC#の別のオプションはありますか?
_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>
_を使用することもでき、それらに同じインデックス機能を使用できます。
List<T>
..........................................を使用します。
これには、Add
Remove
、list[i]
などのRemoveAt
インデクサーがあります。