3

整数配列の場合と同じように値のリストを指定して配列リストにデータを入力したいのですが、「add」メソッドを繰り返し呼び出さずにこれを行う方法がわかりません。

たとえば、{1、2、3、 "string1"、"string2"}を配列リストに割り当てたいと思います。他のアレイについては、次のような割り当てを行うことができます。

int[] IntArray = {1,2,3};

配列リストに対してこれを行う同様の方法はありますか?addrangeメソッドを試しましたが、中括弧メソッドはICollectionインターフェイスを実装していません。

4

5 に答える 5

13

使用している C# のバージョンに応じて、さまざまなオプションがあります。

C# 3.0 にはコレクション初期化子があります。 詳細については、Scott Gu のブログを参照してください。

これがあなたの問題の例です。

ArrayList list = new ArrayList {1,2,3};

また、コレクション オブジェクトを初期化する場合、ほとんどの場合、AddRange と同様のコンポーネントを使用するコンストラクターがありますが、前述のとおり、これはオプションではない場合があります。

于 2008-09-17T21:47:02.367 に答える
8

配列リストには、Array クラスによって実装される ICollection を受け入れる ctor があります。

object[] myArray = new object[] {1,2,3,"string1","string2"};
ArrayList myArrayList = new ArrayList(myArray);
于 2008-09-17T21:47:00.840 に答える
1

(私自身の質問に答えるようなものですが...)

私が見つけた最も近いものは、ArrayList.Adapter メソッドを利用することです。

object[] values = { 1, 2, 3, "string1", "string2" };
ArrayList AL = new ArrayList();
AL = ArrayList.Adapter(values);

//or during intialization
ArrayList AL2 = ArrayList.Adapter(values);

これは私が必要とするものには十分ですが、他の誰かが提案したように、一時的な配列を作成せずに1行で実行できることを望んでいました.

于 2008-09-17T22:13:56.220 に答える
1

あなたのコメントは、最初に見つけたコンポーネントだったので、ArrayList を選択したことを暗示しています。

単純に整数のリストを探していると仮定すると、これがおそらく最良の方法です。

List<int> list = new List<int>{1,2,3};

また、C# 2.0 を使用している場合 (ジェネリックはありますが、コレクション初期化子はありません)。

List<int> list = new List<int>(new int[] {1, 2, 3});

古いバージョンでは int[] 形式が正しくない場合がありますが、配列内の項目数を指定する必要がある場合があります。

于 2008-09-17T22:20:04.050 に答える
0

コレクション初期化子を持つ C# 3.0 を使用していないと思います。一時配列を作成するオーバーヘッドが気にならない場合は、1.1/2.0 で次のようにすることができます。

ArrayList list = new ArrayList(new object[] { 1, 2, 3, "string1", "string2"});
于 2008-09-17T21:53:21.290 に答える