C# 属性(Propery)详解(个人全面总结)

  1. 定义: 是类(class)、结构(structure)和接口(interface)的命名(named)成员。类或结构中的成员变量或方法称为 域(Field)。属性(Property)是域(Field)的扩展,且可使用相同的语法来访问。它们使用 访问器(accessors) 让私有域的值可被读写或操作。
  2. 特征:不确定存储位置(数据的静态特征),通过访问器读写类的私有变量。
  3. 作用:安全性,可将读、写权限分开,实现只读不可写(none set)或只写不可读(none get);灵活性,通过对访问器set增加逻辑处理,实现数据合法校对。
  4. 与变量的区别:变量一般是类内部使用(私有),属性是提供外部使用(一般公有),可读写类的私有变量;变量的读写权限一致,属性的读写权限可以分开。
  5. 命名规范:采用Pascal命名规则,首字母大写。
  6. 实例展示:
private string deptCode; //field being managed by Propery DeptCode.
public string DeptCode
{
  get { return deptCode;}
  //当外部为该属性赋值时,将变量deptCode赋值为value,value就是外部为该属性所赋的值
  set { deptCode = value;}
}

上面的属性还可以简写为(只是把属性当公有变量了,与私有变量deptCode没关系了,一般做分支判断使用):

private string deptCode;
public string DeptCode
{
  get;
  set;
}

属性灵活性的例子:

pubic Person
{
  //
私有字段   private int _age;   // 与_age对应的公开属性,包含了set和get方法   public int Age   {     get { return _age; }     // 利用访问器对输入的年龄进行验证     // 如果输入值小于0或者大于100     // 可以赋为默认值18或者不进行操作     set     {       if (value >= 0 && value <= 100)         _age = value;       // 如果数据无效不进行操作可以注释以下内容       else         _age = 18;     }   }
}

类实例化对象时还可以直接初始化属性值:

Person person = new Person()
{
  Age=28 //注意没有分号
};
也可以写成(无括号):
Person person = new Person
{
  Age=28  //注意没有分号
};

注意:访问器set如果声明为private修饰,这意味着它仅能被同一类的其它成员调用,但不能被类之外的代码访问(参考《C#完全参考手册》page 253.)

posted @ 2021-07-06 10:45  商山早行  阅读(824)  评论(2)    收藏  举报