C# 允许再类或结构内定义属性。属性允许用访问 字段的语法来访问实例的状态,但不需要直接访问字段。这种访问是通过一类特殊的方法来完成的,这种方法称作属性访问器。优点如下:
1.类的用户希望能通过访问字段的语法来访问对象的状态。这样就不用显示地调用方法了。
2.类的开发人员希望截获所有对象状态的访问,可以用属性的访问器来做到这一点
对象状态的访问有两种(读和写),因此每个属性的访问器就可能有两种:
1.每次读取对象的属性时,get访问器被调用。文档中我们称作获取器。
2.每次写入对象的属性时,set访问器被调用。文档中我们称作设置器。
public
class
Foo
{
private int m_FieldPrivate = 10 ; // int 类型属性
public int Prop
{
get
{
return m_FieldPrivate;
}
set
{
m_FieldPrivate = value;
}
}
}
class Program
{
static void Main( string [] args)
{
Foo foo = new Foo();
foo.Prop = 10 ;
int i = foo.Prop;
}
}
{
private int m_FieldPrivate = 10 ; // int 类型属性
public int Prop
{
get
{
return m_FieldPrivate;
}
set
{
m_FieldPrivate = value;
}
}
}
class Program
{
static void Main( string [] args)
{
Foo foo = new Foo();
foo.Prop = 10 ;
int i = foo.Prop;
}
}
访问器是像方法一样的代码,但有几点不同:
1.他们不能当作方法直接调用。
2.在它们的声明中没有输入或输出参数。
属性可以是任意类型(值类型或引用类型)。如上例所示,属性通常配合一个相关的私有字段来使用。