为什么C#对象初始化程序有这种行为?

时间:2015-05-10 14:51:17

标签: c# syntax

为什么C#对象初始值设定项有这种行为?

public class ChuckNorris
{
    public string Impact { get; set; }
}

public class Burnination
{
    public string Impact { get; set; }

    public ChuckNorris GetChuck()
    {
        var chuckNorris = new ChuckNorris
        {
            Impact = Impact // <- Why does the right hand "Impact" property here automatically refers to "Burnination.Impact" and not "chuckNorris.Impact"
        };

        return chuckNorris;
    }
}

就像上面代码中的评论所说的那样。为什么右手 Impact 属性指向 Burnination.Impact 而不是 ChuckNorris 类的Impact属性。如何假设我(开发人员)指的是底层类的Impact属性?

1 个答案:

答案 0 :(得分:1)

其他人已经回应了您,但请注意:

public class ChuckNorris
{
    public string Kick { get; set; }
    public string Punch { get; set; }
}

var cn = new ChuckNorris
{
    Kick = "Dead",
    Punch = Kick
};

这不会编译

object initializer的作业中,您无法引用您正在创建的对象的字段/属性/方法。