C# 6 —— 属性
2015-06-24 20:59
465 查看
记录一下 C# 6 有关属性的语法糖实现,C# 6 涉及到属性的新特性主要有 2 个:自动属性初始化、只读属性赋值与读取。
ILSpy 反编译后的代码
Getter-only auto-properties (类似自动属性初始化)
在构造函数中赋值
表达式式的属性实现
ILSpy 反编译后的代码
ILSpy 反编译后的代码
ILSpy 反编译后的代码
自动属性初始化(Auto-property initializers)
C# 6// Auto-property initializers public int Auto { get; set; } = 5;
ILSpy 反编译后的代码
public int Auto { get; set; } private Program() { this.<Auto>k__BackingField = 5; base..ctor(); // 调用基类构造函数 }
只读属性赋值与读取
涉及到只读属性的赋值与读取的新特性大致有 3 种:Getter-only auto-properties (类似自动属性初始化)
在构造函数中赋值
表达式式的属性实现
Getter-only auto-properties
C# 6// Getter-only auto-properties public int ReadOnly { get; } = 10;
ILSpy 反编译后的代码
public int ReadOnly { [CompilerGenerated] get { return this.<ReadOnly>k__BackingField; } } private Program() { …… this.<ReadOnly>k__BackingField = 10; // <ReadOnly>k__BackingField 为只读属性 base..ctor(); }
在构造函数中赋值(Ctor assignment to getter-only autoprops)
C# 6Program(int i) { // Getter-only setter in constructor ReadOnly = i; }
ILSpy 反编译后的代码
private Program(int i) { …… this.<ReadOnly>k__BackingField = 10; // <ReadOnly>k__BackingField 为只读字段 base..ctor(); this.<ReadOnly>k__BackingField = i; }
表达式式的属性实现(Expression bodies on property-like function members)
C# 6// Expression bodies on property-like function members public int Expression => GetInt(); int GetInt() { return new Random(10).Next(); }
ILSpy 反编译后的代码
public int Expression { // 可知,该属性为只读属性 get { return this.GetInt(); } }
相关文章推荐
- 用C# 实现C/S模式下软件自动在线升级
- c#, extract number from string
- 统计多个wav文件的总音频时长
- List<T>线性查找和二分查找BinarySearch效率分析
- VS问题:该依赖项是由项目系统添加的,不能删除。
- C#读取EXCEL
- C#中Overload和Override的区别?
- C# 邮件的Base64 编码介绍
- C# 32位浮点数转化(一:IBM 转 IEEE)
- csharp:获取 DNS、网关、子网掩码、IP
- [C#]async和await刨根问底
- 转载 C#开发串口总结,并提炼串口辅助类到公用类库中
- C# comport 打印图像
- C# 6.0语法新特性体验(二)
- 通过Roslyn体验C# 6.0的新语法
- C# 当double数值较大且小数位过多时转化成字符串并保留小数位
- C# 控制音量大小
- C#2008的第一个程序HelloWord
- C#泛型
- C# 使用 X.509 v.3 证书的方法。