2013-12-12 44 views
1

當我宣佈這樣一個類中的變量:聲明一個變量有和沒有得到之間的區別;組;

public class Test 
{ 
    public string x = 0; 
} 

,另一個是這樣的:

public class Test2 
{ 
    public string x {get; set;} 
} 

的區別是什麼?

+2

第一個是公共領域。第二個是公共汽車實施的財產。谷歌差異 –

+0

你能解釋一下嗎?我是OOP的新手,因爲我從BASIC開始。 – h313

+3

@ H313現在,當你知道他們被稱爲**領域**和**屬性**時,你可以找到很多很好的並且已經回答了這兩者之間差異的問題,就像這樣:[一個區別是什麼字段和屬性在C#?](http://stackoverflow.com/questions/295104/what-is-the-difference-between-a-field-and-a-property-in-c) – MarcinJuraszek

回答

0

通常既不叫「變量」。第一個是「field」,第二個是「property」(auto-implemented property)。從MSDN

摘錄的「場」:

字段是直接宣佈類或結構的任何類型的變量。字段是其包含類型的成員。從MSDN

摘錄的「屬性」:

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

+0

那麼,什麼會區別在這裏嗎? – h313

+1

區別在於一個屬性只能通過get和set方法來訪問,這些方法可以被擴展來調用一些Changed事件或者進行某種驗證,並且針對它們編譯的代碼不會中斷,只要它們不現在拋出異常或其他東西。將字段更改爲屬性是一項重大改變。 – Magus

+0

你如何評論?雖然公共屬性_look_與外部公共屬性相同,您可以在公共屬性中執行更多操作(如計算,消息日誌記錄,通知環境屬性發生更改等)。 –

相關問題