属性(C# 与 Java)
更新:2007 年 11 月
在 C# 中,属性是类、结构或接口的命名成员,它提供了一种通过get 和 set 访问器方法访问私有字段的巧妙方法。
下面的代码示例为 Animal 类声明 Species 属性,该属性将对私有变量 name 的访问抽象化:
public class Animal
{
private string name;
public string Species
{
get
{
return name;
}
set
{
name = value;
}
}
}
通常,属性的名称与它所访问的内部成员的名称相同,但是第一个字母要大写,如以上示例中的 Name,否则内部成员将带一个 _ 前缀。此外,请注意 set 访问器中所使用的隐式参数 value;该参数具有基础成员变量的类型。
实际上,访问器在内部表示为 get_X() 和 set_X() 方法,以保持与基于 .NET Framework 的语言(它们不支持访问器)的兼容性。定义属性后,可以非常容易地获取或设置其值:
class TestAnimal
{
static void Main()
{
Animal animal = new Animal();
animal.Species = "Lion"; // set accessor
System.Console.WriteLine(animal.Species); // get accessor
}
}
如果一个属性仅有 get 访问器,则它为只读属性。如果它仅有 set 访问器,则为只写属性。如果它同时具有这两种访问器,则为读写属性。