1.概念:
字段:一般把类或结构中定义的变量和常量叫字段;
属性:属性不是字段,本质上是定义修改字段的方法。
2.字段的划分:
(1)静态字段:用修饰符static声明的字段。
不管包含该静态字段的类生成多少个对象或根本无对象,该字段都只有一个实例,静态字段不能被撤销。引用方法:
类名.静态字段名
(2)实例字段:类中定义的字段不使用修饰符static。
没创建该类的一个对象,在对象内创建一个该字段实例,创建它的对象被撤销,该字段对象也被撤销。引用方法:
实例名.实例字段名
(3)常量:用修饰符const声明的字段。
常量只能在声明中初始化,以后不能再修改。
类名.静态字段名
(4)只读字段:用修饰符readonly声明的字段。
只读字段是特殊的实例字段,它只能在字段声明中或构造函数中重新赋值,在其他地方都不能改变只读字段的值。
实例名.实例字段名
3.属性:
属性不是字段,但必然和类中的某个或者某些字段相联系,属性定义了得到和修改相联系的字段的方法。这样属性更加充分的体现了数据的封装性:不直接操作类的数据内容,而是通过访问器进行访问,借助于get和set方法对属性的值进行读写。
using System;
public class Person{
private string name="张三"; //这是一个字段
public string Name //这是属性
{
get{
return name;
}
set{
name = value;
}
}
}
public class Test{
public static void Main(){
Person OnePerson = new Person();
OnePerson.Name = "李四"; //可见属性的使用方法与类中定义的实例字段一致;
}
}
注意:(1)在属性定义中也可以只写set或者get访问器,这样就可以约束属性的值是只能读或者写的了;
(2)虽然属性和字段的语法比较类似,但由于属性本质上是方法,因此不能属性当作变量那样使用,也不能把属性作为引用型参数或者输出参数来进行传递。