关于自动属性的问题

发布于 2024-10-02 10:28:16 字数 207 浏览 11 评论 0原文

如果您实现自动属性

public string Foobar { get; set; }

然后对相应的变量进行编码,

private string foobar = string.Empty;

会发生什么情况自动属性会使用该变量还是编译器会生成 一个额外的变量?

what happens if you implement an automatic property

public string Foobar { get; set; }

and then code the corresponding variable

private string foobar = string.Empty;

Will the automatic property use this variable or does the compiler generate
an additional variable?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

千秋岁 2024-10-09 10:28:16

不,自动属性不会使用您的变量。它就像任何其他名为 foobar 的字段一样。

名称相似度不会以任何方式影响编译器。

编译器将在幕后生成一个字段,但您无法以任何方式访问自动属性的支持字段。

这篇文章< /a> 显示了 IL(中间语言,C# 汇编)级别的工作方式。

No, the automatic property will not use your variable. It would be just like any other field called foobar.

The name smilarity does not influence the compiler in any way.

The compiler will generate a field behind the scenes but you do not have access to the backing field of the automatic property in any way.

This post shows how things work at the IL (Intermediate Langauge, Assembly of C#) level.

辞旧 2024-10-09 10:28:16

编译器不会使用该变量,不会。要使用变量,您必须编写

private string foobar = string.Empty;

public string Foobar 
{
    get { return foobar; }
    set { foobar = value; }
}

如果您有 Resharper,则可以设置模板来执行此操作。 Resharper 还会为您从未使用的私有变量生成 getter。

The compiler won't use that variable, no. To use your variable you will have to write

private string foobar = string.Empty;

public string Foobar 
{
    get { return foobar; }
    set { foobar = value; }
}

If you have Resharper, you can set up templates to do this. Resharper will also generate a getter from an unused private variable for you.

錯遇了你 2024-10-09 10:28:16

为什么会这样?支持字段不必(通常也不会)以这种方式命名。

Why would it? Backing field doesn't have to be (and often isn't) named this way.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文