有人說我有一個屬性,它是一本字典<字符串,布爾>,使用對象初始化我可以用這句法(我覺得看起來很乾淨)一類:協變對象初始值設定項?
new MyClass()
{
Table = { {"test",true},{"test",false} }
}
然而,外我不能這樣做:
this.Table = { {"test",true},{"test",false} };
爲什麼初始值設定項是一個特殊情況?我猜測它與LINQ需求,協變或什麼都沒有關係,但它感覺有點不一致,無法在任何地方使用這種初始化器......
有趣的問題。 – 2011-01-23 12:56:37
我認爲編譯器錯誤是「預期表達式」的事實是一個很大的線索。在第二個例子中,語法並不像您通常所期望的那樣表示一個表達式,即沒有`new`操作符。我懷疑第一個例子是有效的,因爲它是一個特殊情況,編譯器對語法構成表達式的內容更加寬鬆。寬鬆規則的好處是對於對象初始化語法的上下文非常有用的特殊語法,否則它看起來會很難看。 – 2011-01-23 13:45:44