关于自动属性的问题
如果您实现自动属性
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不,自动属性不会使用您的变量。它就像任何其他名为 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.
编译器不会使用该变量,不会。要使用变量,您必须编写
如果您有 Resharper,则可以设置模板来执行此操作。 Resharper 还会为您从未使用的私有变量生成 getter。
The compiler won't use that variable, no. To use your variable you will have to write
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.
为什么会这样?支持字段不必(通常也不会)以这种方式命名。
Why would it? Backing field doesn't have to be (and often isn't) named this way.