2013-11-09 280 views
4

的區別是什麼,如果有的話,(重複)'public int x'之間的區別和'public int x {get;組; }

public int x { get; set; } 

之間

public int x; 

+1

第一個是公共變量,而第二個是公共財產。 –

+3

如果只有一個網站,您可以搜索這樣的東西,如 我不知道,谷歌? https://www.google.co.il/search?q=difference+between+properties+and+variables+c%23&oq=difference+between+properties+and+variabl&aqs=chrome.2.69i57j0l5.11837j0j8&sourceid=chrome&espv=210&es_sm = 122&ie = UTF-8#es_sm = 122&espv = 210&q =屬性+ vs +變量+ c%23 –

+3

在這種情況下,他對谷歌沒有任何東西。他不知道這是一個「財產」。因此,他究竟能夠在Google搜索中投入什麼?我認爲這是一個公平的問題... –

回答

5

第一個被稱爲字段。第二個是財產,在這種情況下,自動執行的財產

屬性的作用類似於字段,但使用getter和setter函數來檢索和設置值。寫入上述屬性的另一種方式如下:

private int _x; 
public int X 
{ 
    get 
    { 
     return _x; 
    } 
    set 
    { 
     _x = value; 
    } 
} 

在這種情況下,可變_x稱爲支持字段。使用自動實現的屬性,您無法訪問後臺字段或自定義getter/setter中的代碼,但如果不需要,則不會比簡短和簡潔。

作爲C#中的一個規則,大多數時候任何公共成員都應該暴露爲屬性而不是字段。

0

第一個是公共變量,可以從任何地方訪問。

第二個是公共財產

檢查屬性tutorial瞭解詳情。

屬性有很多用途:它們可以在允許更改 之前驗證數據;他們可以透明地公開某個類的數據,其中該數據實際上是從其他某個源(如數據庫)中檢索的;他們 可以在數據發生變化時採取行動,例如引發事件,或者 更改其他字段的值。

0

這兩者之間的區別是,一個屬性可以做些事情更多不只是獲取/設置變量。
藉此例如:

private int _x; 
public int x 
{ 
    get 
    { 
     //do something 
     return _x; 
    } 
    set 
    { 
     if(_x != value) 
     PropertyChanged("x"); 
     _X = value; 
    } 
} 

,當我們設置屬性 - 我們通知的東西(PropertyChanged()),該值已更改。這將是很難做的只是領域

+0

是的,但給定了確切的代碼,沒有任何附加的功能,如事件或值檢查,是否有任何實際的區別?換句話說,爲什麼在公共屬性後鍵入{get set}如果你所做的都是直接獲取X的值? – Kokodoko

+0

我從來沒有輸入'get;組;' :-)我輸入'prop'並按Tab鍵。而且,如果我以後需要添加功能性,那麼我就準備好了。 –

相關問題