C# 属性(Propery)详解(个人全面总结)
- 定义: 是类(class)、结构(structure)和接口(interface)的命名(named)成员。类或结构中的成员变量或方法称为 域(Field)。属性(Property)是域(Field)的扩展,且可使用相同的语法来访问。它们使用 访问器(accessors) 让私有域的值可被读写或操作。
- 特征:不确定存储位置(数据的静态特征),通过访问器读写类的私有变量。
- 作用:安全性,可将读、写权限分开,实现只读不可写(none set)或只写不可读(none get);灵活性,通过对访问器set增加逻辑处理,实现数据合法校对。
- 与变量的区别:变量一般是类内部使用(私有),属性是提供外部使用(一般公有),可读写类的私有变量;变量的读写权限一致,属性的读写权限可以分开。
- 命名规范:采用Pascal命名规则,首字母大写。
- 实例展示:
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.)
富贵必从勤苦得,男儿须读五车书。

浙公网安备 33010602011771号