C#中,域和属性有什么区别
2013-05-02 16:08
302 查看
域(Field),就是字段。
字段是可读也可写的,但是属性却可以设置为只读。属性的实质是方法(Method)。
属性(property)是字段的自然扩展,两者都是具有关联类型的命名成员,而且访问字段和属性的语法是相同的。然而,属性与字段不同,不表示存储位置。相反,属性有访问器(accessor),这些访问器指定在它们的值被读取或写入时需执行的语句。
属性的声明类似于字段,不同之处在于属性的声明以定界符{}之间的get访问器和/或set访问器结束,而不是分号。同时包含get访问器和set访问器的属性称为读写属性(read-write property)。只具有get访问器的属性称为只读属性(read-only property)。只具有set访问器的属性称为只写属性(write-only property)。
get访问器相当于一个具有属性类型返回值的无参数方法。除了作为赋值的目标外,当在表达式中引用属性时,会调用该属性的get访问器以计算该属性的值。
set访问器相当于一个具有单个名为value的参数和无返回类型的方法。当一个属性作为赋值的目标,或者作为++或--运算符的操作数被引用时,就会调用set访问器,所传递的自变量将提供新值。
List类声明了两个属性Count和Capacity,依次是只读和只写的。下面是使用这些属性的示例:
List names = new List();
names.Capacity = 100; //调用set访问器
int i = names.Count; //调用get访问器
int j = names.Capacity; //调用get访问器
与字段和方法类似,对于实例属性和静态属性,C#两者都支持。静态属性是声明中具有static修饰符,而实例属性则没有。
属性的访问器可以是虚拟的。当属性声明中包含virtual,abstract,override修饰符时,它们将运用到属性访问器。
字段是可读也可写的,但是属性却可以设置为只读。属性的实质是方法(Method)。
属性(property)是字段的自然扩展,两者都是具有关联类型的命名成员,而且访问字段和属性的语法是相同的。然而,属性与字段不同,不表示存储位置。相反,属性有访问器(accessor),这些访问器指定在它们的值被读取或写入时需执行的语句。
属性的声明类似于字段,不同之处在于属性的声明以定界符{}之间的get访问器和/或set访问器结束,而不是分号。同时包含get访问器和set访问器的属性称为读写属性(read-write property)。只具有get访问器的属性称为只读属性(read-only property)。只具有set访问器的属性称为只写属性(write-only property)。
get访问器相当于一个具有属性类型返回值的无参数方法。除了作为赋值的目标外,当在表达式中引用属性时,会调用该属性的get访问器以计算该属性的值。
set访问器相当于一个具有单个名为value的参数和无返回类型的方法。当一个属性作为赋值的目标,或者作为++或--运算符的操作数被引用时,就会调用set访问器,所传递的自变量将提供新值。
List类声明了两个属性Count和Capacity,依次是只读和只写的。下面是使用这些属性的示例:
List names = new List();
names.Capacity = 100; //调用set访问器
int i = names.Count; //调用get访问器
int j = names.Capacity; //调用get访问器
与字段和方法类似,对于实例属性和静态属性,C#两者都支持。静态属性是声明中具有static修饰符,而实例属性则没有。
属性的访问器可以是虚拟的。当属性声明中包含virtual,abstract,override修饰符时,它们将运用到属性访问器。
相关文章推荐
- 编译c#项目,在项目属性中,平台与目标平台的区别是什么?
- C#中,域和属性有什么区别
- 编译c#项目,在项目属性中,平台与目标平台的区别是什么?
- C#.NET里面抽象类和接口有什么区别
- 黑马程序员--C#中属性和字段(变量)的区别
- c#中 ==与equals有什么区别
- c#中Dictionary、ArrayList、Hashtable和数组的区别是什么?[转]
- 答客户疑问 ASP.NET C#.NET 通用权限管理系统组件源码的 B/S C/S 这里有什么区别?
- 区别C#中的两个属性(Property和Attribute)
- 黑马程序员之C#学习笔记:C#中属性与索引的区别
- C# 中的 == 和 equals()有什么区别?
- C#索引器与属性的区别,以及索引器使用方法
- C#中Dictionary、ArrayList、Hashtable和数组 Array 的区别是什么?
- C#中属性和自动属性的区别
- 答客户疑问 ASP.NET C#.NET 通用权限管理系统组件源码的 B/S C/S 这里有什么区别?
- c#中List、Dictionary、ArrayList、Hashtable和数组的区别是什么?
- c# 事件 +=和-=有什么区别。
- C#属性、字段和成员变量的关系区别
- C#中组件与控件的主要区别是什么
- C#中|(位或)和||(逻辑或)有什么区别?