自动实现的属性真的会在编译时生成私有字段吗?

rit*_*taj 0 .net c#

在此处输入图片说明

编译并运行程序后:

class Person
{
    private string surname;

    public string Name { get; set; }
    public string Surname
    {
        get { return surname;}
        set
        {
            surname = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

可以看到,从链接的图像中,没有显示“名称”私有字段。只是 Visual Studio 无法识别它,还是发生了其他事情?

我已经多次阅读诸如“至于您的两个 C# 示例,一个只是另一个的语法糖。” 或“编译时将创建一个支持字段。”。

有什么问题?

Ser*_*rvy 5

调试器不会向您显示支持字段。这并不意味着它不存在,它只是意味着调试器的设计者认为调试代码的人查看 auto 属性的私有支持字段并不重要,因为他们可以简单地访问数据通过财产本身。