3

Java では、List を作成し、静的初期化子を使用してすぐに入力できます。このようなもの:


List <String> list = new ArrayList<String>()
{{
    Add("a");
    Add("b");
    Add("c");
}}

その場でリストを作成し、それを引数として関数に渡すことができるので、これは便利です。このようなもの:


printList(new ArrayList<String>()
{{
    Add("a");
    Add("b");
    Add("c");
}});

私はC#が初めてで、これを行う方法を理解しようとしていますが、空になります。これはC#で可能ですか? もしそうなら、どうすればそれを行うことができますか?

4

3 に答える 3

8

コレクション初期化子を使用できます。

new List<string> { "a", "b", "c" }

これは、メソッドへの一連の呼び出しにコンパイルされますAdd
メソッドが複数の引数を取る場合Add(例: 辞書)、各呼び出しを別々の中かっこで囲む必要があります。

new Dictionary<string, Exception> {
    { "a", new InvalidProgramException() },
    { "b", null },
    { "c", new BadImageFormatException() }
}
于 2011-10-24T20:38:41.307 に答える
2

あなたもそれを行うことができるのでC# 3.0

List <String> list = new List<String>
                     {
                             "a", "b", "c"
                     };

MSDN、コレクション初期化子

コレクション初期化子を使用すると、IEnumerable を実装するコレクション クラスを初期化するときに、1 つ以上の要素初期化子を指定できます。要素初期化子は、単純な値、式、またはオブジェクト初期化子にすることができます。コレクション初期化子を使用すると、ソース コードでクラスの Add メソッドへの複数の呼び出しを指定する必要がなくなります。コンパイラが呼び出しを追加します。

編集:辞書に関するコメントへの回答

IDictionary<string, string> map = new Dictionary<string, string>
{
   { "Key0", "Value0" },
   { "Key1", "Value1" }
};
于 2011-10-24T20:38:32.040 に答える
1

はい、MSDN here で説明されています

于 2011-10-24T20:38:43.427 に答える