C#中字段和属性两者之间的区别以及属性的作用
字段是占用内存的而属性则不会占用内存
咋们先一起看一下代码,进行对比.
//成员变量
//属性
public int no;
//字段
private int nl;
//属性封装
public int Nl
{
//获取/读取字段的值
get => nl;//属性读取
set
{
if (value >= 10 && value <= 20)//限制
nl = value;//属性赋值
else
{
Console.WriteLine("请输入10到20之间的数字!");
}
}
}
上面这段代码中字段和属性的访问修饰符不同,属性是public: 公共的,而字段是private: 私有的.
访问修饰符
字段和属性都有访问修饰符
作用:
1,设定访问权限
2,限制类中的成员(属性、方法等)可访问的范围
3,访问范围通常有,类的内部、类的外部。
常用类型:
private(私有的,仅类的内部使用);public(公有的,没有访问限制)等等
小结;
类的成员在定义时,没有写出访问修饰符,则默认是private。
对应到字段和属性中,通常字段修饰为private,属性修饰为public。
一,字段
1,字段又称为:“成员变量”,一般在类的内部做数据交互使用。
2,字段命名规范:camel命名法(首单词字母小写)。
(1),字段主要是为类的内部做数据交互使用,字段一般是private。
(2),字段可读可写。
(3),当字段需要为外部提供数据的时候,请将字段封装为属性,而不是使用公有字段(public修饰符),这是面向对象思想所提倡的。
二,属性
1,在面向对象设计中主要使用属性描述对象的静态特征。
2,Pascal命名法(首字母大写),数据类型要和对应的字段要一致。
总结:
属性本质是一个方法,其实就是外界访问私有字段的入口,属性本身不保存任何数据,
在对属性赋值和读取的时候其实就是操作的对应私有字段。
属性的作用
1,避免出现非法数据
通过属性的set方法加入判断逻辑,从而排除这种非法数据。
(set中加入了if条件判断)
2,限定属性只读或者只写
例如有些属性为了保护数据,根据需要,屏蔽set或get方法达到只读和只写。
3,没有对应私有字段的属性,
4,属性一般是向外提供数据,主要用来描述对象的静态特征,所以,属性一般是public。
5,属性具备get和set方法,可以在方法里加入逻辑处理数据,灵活拓展使用。
6,属性的作用是对字母进行赋值时加以限制,
例如;
最开始代码中对int写了两个,而属性则对输入的数字进行了限制,其值只能在10到20之间才可以赋值成功
下面我们再来看看调用代码
//访问lei中的成员变量
//就要先进行实例化对象(具体化)
//new关键字后面lei方法就是该类对象对应的构造函数
//实例化对象名称前面呢个lei表示是这个类名称
Lei lei = new Lei();
//我们给属性值限制输入为10到20以后,
//当我们输入的数值不在范围里面,那么最后控制台里输出为0
//如果输入的数值在范围当中的话,那么就照常输出
lei.Nl = 15;
//下面no是给lei中的字段进行赋值
lei.no = 13;
Console.WriteLine(lei.no);
Console.WriteLine(lei.Nl);
Console.ReadKey();