为什么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属性?
答案 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
的作业中,您无法引用您正在创建的对象的字段/属性/方法。