C# 屬性

2018-01-16 03:27 更新

C#屬性

屬性從外部看起來像字段,但在內(nèi)部它們包含邏輯。

一個屬性被聲明為一個字段,但是添加了一個get / set塊。

以下是如何實(shí)現(xiàn)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訪問器運(yùn)行。它必須返回屬性類型的值。

在賦值屬性時,集合訪問器運(yùn)行。

它有一個屬性類型的名為value的隱式參數(shù),通常分配給一個私有字段。

我們可以編寫屬性的代碼來控制獲取和設(shè)置其值。

屬性允許以下修飾符:

項(xiàng)目修飾符
修飾符...static
訪問修飾符public internal private protected
繼承修飾符new virtual abstract override sealed
非托管代碼修飾符unsafe extern

只讀和計(jì)算屬性

如果屬性僅指定get訪問器,那么該屬性是只讀的。

如果一個屬性只指定一個集合訪問器,則該屬性是只寫的。

屬性通常具有專用的備份字段以存儲基礎(chǔ)數(shù)據(jù)。

然而,也可以從其他數(shù)據(jù)計(jì)算屬性。例如:


decimal currentPrice, sharesOwned; 
public decimal Worth {
   get { return currentPrice * sharesOwned; } 
} 

自動屬性

自動屬性聲明指示編譯器提供實(shí)現(xiàn)。

我們可以重新聲明本節(jié)中的第一個示例如下:


public class Product 
{
    public decimal CurrentPrice { get; set; } 

} 

編譯器自動生成無法引用的編譯器生成的名稱的私有備用字段。

如果要將屬性以只讀方式公開給其他類型,則可以將集合訪問器標(biāo)記為private。

獲取和設(shè)置輔助功能

get和set訪問器可以有不同的訪問級別。


public class Product {
    private decimal x;
    public decimal X{
      get { 
          return x; 
      } 
      private set { 
          x = Math.Round (value, 2); 
      } 
    } 
} 
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號