- 在C#中
- get 访问器
- set 访问器
- 属性的优势
- 例子
在C#中
get
和 set
是访问器(accessors
)的关键词,它们用于定义属性的读取和写入行为。属性是一种特殊的类成员,它提供了对字段(field
)或计算结果的灵活访问。
get 访问器
get
访问器用于读取属性的值。当你尝试访问一个属性时,get
访问器会被调用,并返回属性的值。你可以在其中添加任何你需要的逻辑,比如计算属性的值,或者返回缓存的值等。
set 访问器
set
访问器用于写入属性的值。当你尝试给属性赋值时,set 访问器会被调用。你可以在 set 访问器中添加验证逻辑,比如检查新值是否满足某些条件,或者在赋值前对新值进行转换。
属性的优势
属性提供了一种比公共字段更灵活和可控的方式来访问类的数据。通过属性,你可以:
验证数据
在 set
访问器中验证新值是否有效。
计算值
在 get
访问器中根据其他字段的值计算属性的值。
控制访问
限制对属性的访问,比如只允许读取不允许写入,或者只允许在特定条件下进行访问。
隐藏实现细节
通过属性,你可以隐藏字段的实际名称和类型,只暴露一个清晰的接口给类的使用者。
例子
public class Person
{ private string _name; private int _age; public string Name { get { return _name; } set { _name = value; } } public int Age { get { return _age; } set { if (value >= 0) { _age = value; } else { throw new ArgumentOutOfRangeException(nameof(value), "Age cannot be negative."); } } }
}
在这个示例中,Name
属性有一个简单的 get
和 set
访问器,而 Age
属性在 set
访问器中添加了验证逻辑,确保年龄不能为负数。