C#属性和字段(访问修饰符)
不同点 | 逻辑性/灵活性 | 存储性 | 访问性 | 使用范围 | 安全性 |
属性(Property) | 源于字段,对字段的扩展,逻辑字段 | 并不占用实际的内存 | 可以被其他类访问 | 对接收的数据范围做限定,外部使用 | 增加了数据的安全性 |
字段(Field) | 不经过逻辑处理 | 占用内存的空间及位置 | 大部分字段不能直接被访问 | 内存使用 | 不安全 |
[适用情况]
公共字段:
1. 允许自由读写
2. 取值范围只收数据类型约束而无其他任何特定限制;
3. 值的变动不需要引发类中其它任何成员的相应变化;
如果均满足上述条件,那么我们便可以大胆地使用公共字段;
属性:
1. 要求字段只能读或只能写;
2. 需要限定字段的取值范围;
3. 在改变一个字段的值的时候希望改变对象的其它一些状态;
如果满足上述条件中的任何一个,就应该使用属性。
namespace 字段和属性
{
internal class Program
{
static void Main(string[] args)
{
// C# 属性(Property) 和字段(Field)的区别
//属性(Property)是另一种类型的类成员,定义属性的目的在于便于一些私有字段的访问.类提供给外部调用时用的可以设置或读取一个值,属性则是对字段的封装,将字段和访问自己字段的方法组合在一起,提供灵活的机制来读取、编写或计算私有字段的值。属性有自己的名称,并且包含get 访问器和set 访问器。
// 字段(Field)是一种表示与对象或类关联的变量的成员,字段声明用于引入一个或多个给定类型的字段。字段是类内部用的,private类型的变量(字段),通常字段写法都是加个"_"符号,然后声明只读属性,字段用来储存数据。
//声明格式:
// 属性修饰符 类型 属性名{ get { //get访问器代码 } set{ //set 访问器代码} }
//总结:
//1.字段和属性都是成员变量
//2.字段以小驼峰命名,属性以大驼峰命名
//3.字段是私有的,属性是公共的
//4.字段可以存储数据,属性不能
}
}
class People
{
//类拥有成员变量和成员方法
//成员变量就是字段,用来存储对象的信息
public string App { get; set; }
private int age;
//类的成员可以通过设置访问修饰符限制可访问性
//比如: name出现无字 age出现负数
//为了保证对象的数据不被随意更改,我们通常会使用属性来定义公开成员变量(使用大驼峰),使用字段定义私有的成员变量(使用小驼峰)
public int Age
{
get
{
Console.WriteLine("get执行了");
return age;
}
set
{
if (value > 0 && value <= 20)
{
age = value;
}
else
{
throw new Exception("年龄不符合");
}
}
}
}
}
* 访问修饰符:指定了一个类,以及这个类的成员的课访问性,通过这个标识,控制这个类,以及这个类的某个成员的可访问性
*
* public: 公共的 所有的地方都可以访问
* private:私有的 类内部可以访问
* internal: 只能在当前项目访问
*
* protected:只能由该类以及子类可以访问
* proteceed internal : 能在当前类 子类 实例中访问,在别的项目(引用了这个项目)中,可以在子类中访问,实例不能访问