2012-12-31 62 views
4

我是C#的新手。我正在通過一個教程。它顯示瞭如何爲變量創建accesor-mutator,如下所示;C#getters和setters方法定義 - 初學者

public String var1 { 

get {return "";} 
set {someVar = value;} 

} 

1)無法創建的getter和setter象Java

public getVar() {return "";} 
public setVar(String x){var=x;} 

2)什麼是在C#中使用value產生的?

+2

@downvoter,下降一些評論... – nawfal

+3

只是爲了添加到現有的答案 - 它不僅更容易閱讀,但徹頭徹尾*必要*對於一些東西 - 比如WPF中的綁定。 – ceyko

回答

9
  1. 你可以,但是這更麻煩使用,而忽略C#編碼準則。

  2. value是設置者的隱式參數。它包含調用者將屬性設置爲的值。 (該Property = something調用的右側)

documentation

4
  1. 當然可以。 C#中的屬性被設計爲這樣的語法糖。在引擎蓋下,屬性只是一個get/set方法。創建這兩個方法比較容易,它將兩個方法保留在源代碼的一個位置,對調用者來說它有更簡單的語法,並且只需獲取/設置值的任何屬性都更容易生成。

  2. 這是一個關鍵字。這是正在傳遞給該方法的價值。如果有人輸入obj.var1 = "abc";,則value將參考​​。

+0

請注意,雖然看起來像語法糖,但屬性仍然是一個不同於只是方法的約定的概念。另外,'value'不是一個關鍵字,否則你不能在其他地方使用'value'作爲變量名。這只是一個在setter中隱式定義的變量。 – poke

3

當然,你可以像Java那樣做。但爲什麼?屬性語法允許從調用者的角度獲得更好的體驗。

value是一個僞變量,您可以用它來設置您的內部變量等。它與您的類似Java的示例中的x等效。

1

是的,你可以創建的getter setter方法爲在java中 例如

int marks; 
public void setMarks(int marks) 
{ 
this.marks=marks; 
} 
public int getMarks() 
{ 
return marks; 
}