2

Javaでは、次のような構造を使用するのが好きです。

List<String> list = new ArrayList<String>() {{add("foo");}};

C#で1行でこれを行う方法もありますか?

4

4 に答える 4

8

これはコレクション初期化子と呼ばれ、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 章を参照してください。

于 2009-02-11T07:19:16.733 に答える
6

あなたが欲しいのは配列初期化子だと思います

List<string> list = new List<string>() { "foo" };

複数の項目はカンマで区切る必要があります

List<string> list = new List<string>() { "foo","bar","bas"};
于 2009-02-11T07:07:26.327 に答える
2

プロパティ値を設定するには、.NET 3.5 でそれを行うことができます。

List<string> list = new List<string> () { Property = Value, Property2 = Value2 };

または、配列を初期化するには:

List<string> list = new List<string> () { "value1", "value2" };

ただし、この方法でメソッドを呼び出すことはできません。

于 2009-02-11T07:04:46.083 に答える
0

コレクションへのオブジェクトの追加を処理する必要がある場合は、コレクション初期化子がうまく機能しますが、より静的な初期化を実行する必要がある場合は、Javaの静的初期化子と同じように機能する静的コンストラクターと呼ばれるものを使用できます。

これはフォーマットが貧弱ですが、それをカバーしているようです

于 2009-02-11T07:20:26.247 に答える