不是四四
0 回复

C#属性

上一篇 下一篇 不是四四 发表于:2015-08-10 23:25 浏览(10754) 分享到微博

属性 (property) 是字段的自然扩展。属性和字段都是命名的成员,都具有相关的类型,且用于访问字段和属性的语法也相同。然而,与字段不同,属性不表示存储位置。相反,属性有访问器 (accessor),这些访问器指定在它们的值被读取或写入时需执行的语句。

属性的声明与字段类似,不同的是属性声明以位于定界符 { } 之间的一个 get 访问器和/或一个 set 访问器结束,而不是以分号结束。同时具有 get 访问器和 set 访问器的属性是读写属性 (read-write property),只有 get 访问器的属性是只读属性 (read-only property),只有 set 访问器的属性是只写属性 (write-only property)

get 访问器相当于一个具有属性类型返回值的无形参方法。除了作为赋值的目标,当在表达式中引用属性时,将调用该属性的 get 访问器以计算该属性的值。

set 访问器相当于具有一个名为 value 的参数并且没有返回类型的方法。当某个属性作为赋值的目标被引用,或者作为 ++ 的操作数被引用时,将调用 set 访问器,并传入提供新值的实参。

List<T> 类声明了两个属性 Count Capacity,它们分别是只读属性和读写属性。下面是这些属性的使用示例。

List<string> names = new List<string>();
names.Capacity = 100;        // Invokes set accessor
int i = names.Count;             // Invokes get accessor
int j = names.Capacity;          // Invokes get accessor

与字段和方法相似,C# 同时支持实例属性和静态属性。静态属性使用 static 修饰符声明,而实例属性的声明不带该修饰符。

属性的访问器可以是虚的。当属性声明包括 virtualabstract override 修饰符时,修饰符应用于该属性的访问器。


分享到:
标签:
C#