C# 属性
2018-01-16 03:27 更新
C#属性
属性从外部看起来像字段,但在内部它们包含逻辑。
一个属性被声明为一个字段,但是添加了一个get / set块。
以下是如何实现CurrentPrice作为属性:
public class Product {
decimal currentPrice; // The private "backing" field
public decimal CurrentPrice // The public property
{
get {
return currentPrice;
}
set {
currentPrice = value;
}
}
}
get
和 set
是属性访问器。
读取属性时,get访问器运行。它必须返回属性类型的值。
在赋值属性时,集合访问器运行。
它有一个属性类型的名为value的隐式参数,通常分配给一个私有字段。
我们可以编写属性的代码来控制获取和设置其值。
属性允许以下修饰符:
项目 | 修饰符 |
---|---|
修饰符... | static |
访问修饰符 | public internal private protected |
继承修饰符 | new virtual abstract override sealed |
非托管代码修饰符 | unsafe extern |
只读和计算属性
如果属性仅指定get访问器,那么该属性是只读的。
如果一个属性只指定一个集合访问器,则该属性是只写的。
属性通常具有专用的备份字段以存储基础数据。
然而,也可以从其他数据计算属性。例如:
decimal currentPrice, sharesOwned;
public decimal Worth {
get { return currentPrice * sharesOwned; }
}
自动属性
自动属性声明指示编译器提供实现。
我们可以重新声明本节中的第一个示例如下:
public class Product
{
public decimal CurrentPrice { get; set; }
}
编译器自动生成无法引用的编译器生成的名称的私有备用字段。
如果要将属性以只读方式公开给其他类型,则可以将集合访问器标记为private。
获取和设置辅助功能
get和set访问器可以有不同的访问级别。
public class Product {
private decimal x;
public decimal X{
get {
return x;
}
private set {
x = Math.Round (value, 2);
}
}
}
以上内容是否对您有帮助:
← C# 引用
更多建议: