为了实现对数据的良好封装,C#为类提供了属性访问函数(简称属性,Property)。属性用于控制对字段的访问。属性包含 set 访问函数和 get 访问函数,分别用于写字段和读字段。
class A
{
private string name; // 被控制字段
public string Name // 属性
{
get { return name; }
set { name = value; } // value 为隐式参数,由C#提供,表示等于号的右值。
}
}
public static void Main(string[] args)
{
A a = new A();
a.Name = "a";
Console.Write(a.Name);
}
如果属性只有 get 访问函数,则此属性只读,只能作为右值;如果只有 set 方法,则此属性只写,只能作为左值。需要注意的是,如果属性封装的字段本身也是一个复合类型,则只读属性无法限制对这个复合类型对象的成员的修改,因为get会返回这个符合对象的引用,而引用是可能可以修改自己的成员的,但是直接修改引用是不行的,依旧还是只能做右值。比如:
public class Address
{
public s