今日、いくつかのランダムなオブジェクトの作成を通じて、このDictionary<K, V>
. 次の割り当てはコンパイラのショートカットですか、それとも の機能ですかDictionary<string, string>
。
IDictionary<string, string> items = { { "item1key", "item1value" } };
ソースを見ると、Dictionary<K, V>
これがどのように機能するかについて、手に負えないものは何もありません。このクラス ドットのすべてのインターフェイスを実装しても、同様の操作を実行することはできません。辞書にはできるのに、別の型にはできないのはなぜですか。たとえば、コンパイラまたは言語機能は、最初の項目がキーで 2 番目の項目が値であることをどのように認識しますか。または、さらに具体的には、この同じ構文を使用することはできませんList<string>
List<string> items = { "item1" };
最初のものは有効ですが、なぜですか?
私は必ずしもこれを複製しようとしているわけではありませんが、なぜそうなのかについて興味があります。この場合、辞書が特別な理由は何ですか?
うまくいく例
public class Button
{
public string Title { get; set; }
public ButtonType Type { get; set; }
public IDictionary<string, string> Items { get; set; }
public bool RequiresSelected { get; set; }
}
var buttons = new List<Button>
{
new Button {
Items = {
{"button1", "Button 1"},
{"button2", "Button 2"},
{"button3", "Button 3"},
},
Title = "3 Buttons",
Type = ButtonType.DropDown
}
};