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); 
      } 
    } 
} 
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号