[C#1] 5-属性

1.无参属性

当定义一个属性时,编译器会在生成的托管模块中产生一下3项:

1:get访问器方法,定义get时才有;
2:set访问器方法,定义set时才有;
3:关于属性的元数据,这项总是存在;

这写元数据信息中包括一些标记和属性类型,并有一个对get和set访问器方法的引用,仅仅为属性和它的访问器之间提供了一层关联关系。CLR本身并不使用它们,在运行时仅需要访问器方法即可。采用属性的代码不应有过复杂结构和太长的执行时间。应该相应的简短快速,对于简单的get和set,JIT编译器会将代码进行内联[inline]处理优化。

2.无参属性[索引器]

索引器可以看作是对"[]"操作符的一种重载方式。CLR同样对待索引器和无参属性。默认产生get_Item、set_Item方法,其中Item是编译器默认的名称,可通过应用Sysetm.Runtime.CompilerDervices.IndexNameAttribute特性来改变默认的Item名字。System,String类型就是一个例子,String类型的索引器名字叫做Chars,而不是Item。

C#没有静态索引器[CLR支持],对CLR来说,属性和索引器仅仅是定义在类型中的一些方法而已

posted @   Timetombs  阅读(679)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
1.无参属性2.无参属性[索引器]
点击右上角即可分享
微信分享提示