Javaでは、次のような構造を使用するのが好きです。
List<String> list = new ArrayList<String>() {{add("foo");}};
C#で1行でこれを行う方法もありますか?
Javaでは、次のような構造を使用するのが好きです。
List<String> list = new ArrayList<String>() {{add("foo");}};
C#で1行でこれを行う方法もありますか?
これはコレクション初期化子と呼ばれ、C# 3.0 の一部です。
リストだけでなく、IEnumerable を実装し、コレクション初期化子の各要素に適切な Add メソッドがある限り、より複雑な型のコレクションを初期化できます。たとえば、次のようなAdd(key, value)
メソッドを使用できます。Dictionary<TKey, TValue>
var dict = new Dictionary<string, int>
{
{"first", 10 },
{"second", 20 }
};
詳細については、 Manning の Web サイトから無料でダウンロードできる C# in Depth の第 8 章を参照してください。
あなたが欲しいのは配列初期化子だと思います
List<string> list = new List<string>() { "foo" };
複数の項目はカンマで区切る必要があります
List<string> list = new List<string>() { "foo","bar","bas"};
プロパティ値を設定するには、.NET 3.5 でそれを行うことができます。
List<string> list = new List<string> () { Property = Value, Property2 = Value2 };
または、配列を初期化するには:
List<string> list = new List<string> () { "value1", "value2" };
ただし、この方法でメソッドを呼び出すことはできません。
コレクションへのオブジェクトの追加を処理する必要がある場合は、コレクション初期化子がうまく機能しますが、より静的な初期化を実行する必要がある場合は、Javaの静的初期化子と同じように機能する静的コンストラクターと呼ばれるものを使用できます。
これはフォーマットが貧弱ですが、それをカバーしているようです