有人说我有一个属性,它是一本字典<字符串,布尔>,使用对象初始化我可以用这句法(我觉得看起来很干净)一类:协变对象初始值设定项?
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