2012-10-02 32 views
1

可能重複:
In C# what does this code with 「get」 mean?「get」是什麼意思?

我使用的開源項目。在這個項目中有功能。

public virtual ICollection<Customer> AffiliatedCustomers 
{ 
    get 
    { 
     return _affiliatedCustomers ?? (_affiliatedCustomers = new List<Customer>()); 
    } 
    protected set { _affiliatedCustomers = value; } 
} 

我不明白「get」是什麼意思。 你能解釋一下這個功能嗎?

回答

8

AffiliatedCustomers財產

get定義屬性getter,它是內部用於通過屬性返回值的方法。它可以讓你用這個給定像這樣的類的實例:

var customers = theClass.AffiliatedCustomers; // Looks like a field, but is a property 

屬性也可以有set部分,以及,因爲這人做(protected set { _affiliatedCustomers = value; }),它給你在什麼什麼時候發生的控制通過屬性設置值。

詳情請見Properties in C#

0

這是MSDN引用的屬性, :

屬性是成員提供了一個靈活的機制來讀取,寫入或計算私有字段的值。屬性可以像使用公共數據成員一樣使用,但它們實際上是稱爲訪問器的特殊方法。這使得數據可以被輕鬆訪問,同時仍然提供方法的安全性和靈活性。

請參閱此鏈接瞭解更多: http://msdn.microsoft.com/en-us/library/x9fsa0sw(v=vs.80).aspx

0

屬性有一個getter和一個setter - 他們的目的是顯而易見的(以獲取和設置屬性的值)。

當您使用自動屬性時,仍然有一個getset,但支持變量會自動爲您執行。在你給出的例子中,代碼的作者選擇了自己的get實現 - 在這種情況下,在第一次訪問屬性時自動初始化成員變量。

2

這不是一個函數。這是一個財產。一個屬性基本上是一些變量的花哨包裝。例如,聲明以下屬性:

public string SomeProperty { get; set; } 

實際上將編譯到這樣的事情:

private string backing_SomeProperty; 

public void set_SomeProperty(string value) 
{ 
    backing_SomeProperty = value; 
} 

public int get_SomeProperty() 
{ 
    return backing_SomeProperty; 
} 

這是一個自動屬性的示例。當然,你也可以自己定義getter和setter方法:

public string SomeProperty 
{ 
    get 
    { 
     // some logic code here 
     // then return some value 
    } 

    set 
    { 
     // some logic code here 
     // then set some value 
    } 
}