Csharp/C#教程:C#自动属性分享


C#自动属性

C#3.0的自动属性是否完全取代了提交的文件?

我的意思是,我可以直接使用该属性而不是归档作为属性作为私人支持字段。(对不起,我只是这样理解)。

int a; public int A { get;set; } 

当您从代码访问该属性时 – 无论是在类内部还是外部 – 它始终作为属性进行访问。 在大多数情况下,这并不重要 – 但它确实意味着您无法通过引用传递它,如果它是一个字段,您将能够做到。

直接访问支持字段(reflection旁边)的唯一代码是属性本身。

这是一个纯粹而简单的财产。 它不作为字段提供 – 它可作为属性提供。 C#编译器不会使用字段访问替换对它的访问。 访问它始终是属性访问。 当然,它可能由JIT编译器内联,但这没什么特别的。 就CLR而言,它只是一个普通的属性(碰巧应用了[CompilerGenerated]属性)。

但是要回答你原来的问题 – 是的,自动属性意味着你不需要自己声明支持字段。 实际上,这个:

 public int Foo { get; set; } 

被翻译成

 private int <>Foo; // Or some other unspeakable name public int Foo { get { return <>Foo; } set { <>Foo = value; } } 

无法直接在C#代码中访问生成的字段,因为它具有无法形容的名称。 如果您通过reflection检查类型,您会看到它存在 – CLR不区分自动实现的属性和“正常”属性。

是的,自动属性有自己的保持字段。

定义自动属性时,编译器将创建必要的后备字段。 它不是常规代码中的字段,但它存在,如果您确实需要,可以通过reflection访问它。

有关详细信息,请参阅本指南: http : //msdn.microsoft.com/en-us/library/bb384054.aspx

涉及一些编译器魔法,例如代理,等等。 你可以看到它好像编译器负责创建必要的代码,否则你必须明确键入。

上述就是C#学习教程:C#自动属性分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/936501.html

(0)
上一篇 2021年11月7日
下一篇 2021年11月7日

精彩推荐