第 10 章 属性
第 10 章 属性
NyxX第 10 章 属性
本章内容:
CLR 支持两种属性;无参属性,有参属性。
10.1 无参属性
将属性想象成智能字段,即背后有额外逻辑的字段。CLR 支持静态、实例、抽象和虚属性。外,属性可用任意“可访问性”修饰符来标记
10.1.1 自动实现的属性
如果只是为了封装一个支持字段而创建属性,C#还提供了一种更简洁的语法,称为自动实现的属性(Automatically Implemented Property,后文简称为 AIP)
如:
1 | // 自动实现的属性 |
如果使用 AIP,属性必然是可读和可写的。
10.1.2 合理定义属性
10.1.3 对象和集合初始化器
C# 语言支持一种特殊的对象初始化语法。下面是一个例子:
1 | Employee e = new Employee() { Name = "Jeff", Age = 45; } |
这一行代码等价于以下几行代码。
1 | Employee e = new Employee(); |
如果属性的类型实现了 IEnumerable 或 IEnumerable<T> 接口,属性就被认为是集合,而集合的初始化是一种相加(additive)操作
10.1.4 匿名类型
利用 C# 的匿名类型功能,可以用很简洁的语法来自动声明不可变(immutable)的元组类型。
1 | // 定义类型,构造实例,并初始化属性 |
10.1.5 System.Tuple类型
10.2 有参属性
C# 允许一个类型定义多个索引器,只要索引器的参数集不同。





