このような初期化構文を使用するには:
var contacts = new ContactList
{
{ "Dan", "dan.tao@email.com" },
{ "Eric", "ceo@google.com" }
};
...私の理解では、私のContactList
タイプは2つのパラメーターを受け取るメソッドを定義する必要があります。Add
string
public void Add(string name, string email);
これについて私が少し混乱しているのは、{ }
初期化構文が読み取り専用または固定サイズのコレクションを作成するときに最も役立つように見えることです。結局のところ、それは配列の初期化構文を模倣することを意図していますよね?(OK、配列は読み取り専用ではありませんが、固定サイズです。)そして当然、コンパイル時にコレクションのコンテンツ(少なくとも要素の数)がわかっている場合にのみ使用できます。
したがって、このコレクション初期化構文を使用するための主な要件(Add
メソッドを持ち、したがって可変コレクションを持つ)は、それが最も役立つ一般的なケースと矛盾しているように思われます。
この問題については、C#設計チームほど多くのことを考えていないと確信しています。この構文には、通常の使用シナリオとより適切に一致するさまざまなルールがあった可能性があるようです。
私はここで基地から離れていますか?固定サイズのコレクションを初期化するために構文を使用したいという願望は、{ }
私が思うほど一般的ではありませんか?私が単に考えていないこの構文の要件の定式化に影響を与えた可能性のある他の要因は何ですか?