C# 语言规范 类和对象 属性
时间:2011-01-11 来源:zhanqi
属性 (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 修饰符声明,而实例属性的声明不带该修饰符。
属性的访问器可以是虚的。
当属性声明包括 virtual、abstract 或 override 修饰符时,修饰符应用于该属性的访问器。