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

Ama*_*Dev 0 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

就像上面代码中的注释所说的那样.这是为什么右手影响属性指向Burnination.Impact和不影响财产查克·诺里斯类.如何假设我(开发人员)指的是底层类的Impact属性?

Jon*_*eet 6

基本上,对RHS的表达式进行=解析和评估,就像在任何其他情况下一样.所以你可以:

ChuckNorris chuck1 = new ChuckNorris { Impact = "foo" };
ChuckNorris chuck2 = new ChuckNorris { Impact = chuck1.Impact };
Run Code Online (Sandbox Code Playgroud)

它只是赋值左侧的标识符,它们隐含地与正在创建的对象有关.