z属性
本章也比较简单稍作介绍:
- 无参属性就是我们常见的属性
可以封装属性、以线程安全方式访问
- 有参属性就是C#中的所引器
- 匿名类型
如图遇到如下代码
具体点就是:
上面的注释也已经讲清楚了,定义的类型之后,构造实例,然后初始化属性。现在详细说下
编译器接收到 上图代码,先用var 定义一个类型,但是不具体指定什么类型,完全由后面的表达式 expression等来推断,上图中 “Jeff”的类型来推断,怎么推断呢。看到Name、Year后会创建这些推断类型的私有字段,并且为每个字段创建公共只读属性,和一个构造器构造器接收这些表达式传值,初始化私有只读字段,此外还重写了并重写Object的Equals(判断每个字段是否都想等),GetHashCode(根据每个字段的哈希码生成哈希码)和ToString(返回“属性=值”对的以逗号分隔的列表)。如图
因此凡是多个匿名类型,并且匿名类型具有相同的结构那么,编译器仅会创建一个匿名类型。
- 元组
泛型类型,继承于Object 区别在于元数,一经创建不可改变,访问通过item访问。
- 索引器
有参属性,不做深入讨论
- JIT优化
对于简单的get,set访问编译器会将代码内联注意是简单的get,set.这样使用属性就没有性能消耗,因为内联到方法的调用的地方了。避免了方法调用时候产生的开销,但是属性内联到方法的调用地方,那么方法就变的比较大了。因此才用简单的get,set访问器的使用会使本机代码变小,因此执行的更快。注意是简单的get,set。