5类的属性和字段
字段
用于存储数据,一般在类中访问权限设置为private,仅在本类中可以访问,防止外界直接访问。
属性
属性的作用就是保护字段、对字段的赋值和取值进行限定。
外部需要访问或者设置字段的值都应该通过属性来设置或者访问,属性就是为了保护字段
属性的本质就是两个方法组成的(get,set)。
在属性的get里判断的是字段的值,在set里是判断value的值,如果属性有get和set我们称为可读可写属性,只有get我们称为只读属性
字段和属性一般都是搭配使用,格式如下:
private string _name;//姓名字段,字段 就是用来存数据的,属性是用来设置字段的访问或者修改权限的
public string Name //姓名 字段的属性
{
get { return _name; }
set { _name = value; }
}
get { return _name; } 的内部原理如下:
public string get_Name()
{
return this._name;
}
set { _name = value; }的 内部原理如下:
public void set_Name(string value)
{
this._name = value;
}
在外部实例化一个类的实例,在对属性赋值的时候,是通过属性的set方法来对字段进行设置的,而输出属性的时候是通过调用get方法来读取字段的值。
一般可以在属性的get或者set里做一些限定,防止错误数据存入字段。
比如:创建一个人的类
private string _name;//姓名字段,字段
public string Name //姓名 字段的属性
{
get { return _name; }
set { _name = value; }
}
private int _age;//年龄字段
public int Age//年龄字段的属性
{
get { return _age; }
set//设置修改set的时候的权限
{
if (value < 0 || value > 100)
{
value = 0;
}
_age = value;
}
}
private char _sex;//性别字段
public char Sex//性别字段的 属性
{
get//设置读取get的时候的权限
{
if (_sex != '男' && _sex != '女')
{
_sex = '男';
}
return _sex;
}
set { _sex = value; }
}
//人的方法,吃喝拉撒睡
public void CHLSS()
{
Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生,我会吃喝拉撒睡", this.Name, this.Age,this.Sex);
}
在外面实例化一个对象的时候,即使年龄和性别乱写,也会有默认值
Person Zhang = new Person(); //类的实例化
Zhang.Name = "张三"; //对象的初始化
Zhang.Age = -18; //对象的初始化
Zhang.Sex = '椿';
Zhang.CHLSS();//输出结果;;我叫张三,我今年0岁了,我是男生,我会吃喝拉撒睡
在外面尽量使用属性来访问字段。