Inner = {Property = true}编译,是编译器错误还是滥用的功能?

时间:2014-08-22 14:21:33

标签: c#-4.0

我偶然发现一些令我挠头的事情。使用Visual Studio 2013 Update 3,我意外地为一个属性分配了一个对象而没有提供新的操作符或类型并且它已经编译,但是在执行时抛出异常。

以下是我正在做的一个例子:

public class Outer
{
    public Inner Inner { get; set; }
}

public class Inner
{
    public bool Property { get; set; }
}

新Outer的实例化:

var outer = new Outer
{
    Inner = {Property = true}
};

在这种情况下,我希望看到编译器错误,但这是成功编译的。那么,这是一个错误还是我偶然发现的一些新功能,我只是没有正确使用?

0 个答案:

没有答案