C#中属性、字段和成员变量的关系以及区别
1、例子:
1、我们先创建一个类叫Student(学生)
2、字段为age(年龄)、name(姓名)、sex(性别)
3、属性为:Age、Name、Sex。
4、那么成员变量就是:age、name、sex、Age、Name、Sex
注意:字段和属性都可叫做是成员变量。属性和字段的功能都是用来存储数据,但他们肯定有不同的地方
class Student
{
//定义私有的成员变量
private int age;//年龄
private string name;//姓名
private string sex;//性别
/// <summary>
/// 获取或设置Student对象中Age年龄的值
/// </summary>
public int Age
{
get { return age; }//属性读取,获取age的值
//value是关键字
set { age = value; }//属性赋值
}
/// <summary>
/// 获取或设置Student对象中Name年龄的值
/// </summary>
public string Name
{
get { return name; }//属性读取,获取name的值
set { name = value; }//属性赋值,设置name的值
}
/// <summary>
/// 获取或设置Student对象中Sex性别的值
/// </summary>
public string Sex
{
get { return sex; }
set { sex = value; }
}
}
2、区别:
字段一般会本类的内部使用,而属性则一般供外部的类访问。
按照类的设计原则,字段都是被private(私有的)修饰过的,只能在本类中使用,如果说被public(公共的)修饰,那么他就可以被外部的类任意访问,如果说字段被无意的修改或者有意的破环,那么这就是我们很不希望看到的,所以说字段一般都是被private修饰
属性相当于是给字段添加了一个保护层,如果想读取这个字段的值,属性里面就必须有get(获取),如果说是想给字段赋值,属性里边就一定是set(修改/设置/赋值)。
如果说在get或set中增加一些限制或者说判断条件,验证要读取或赋值的内容,或者说让某个字段只读或只赋值,都可以实现。对于外部的使用者来说只能够使用这个属性而不能控制,如何控制操作就取决于类或者说我们的程序员。
注意:字段是有默认初值的,如果说没有设置属性中字段的值,只是获取,那么获取到的一定是默认初值。