2010-04-19 25 views

回答

5

沒有,但現在他們是相同的

private double memberVal; 
public double MemberVal 
{ 
    get { return memberVal; } 
    set { memberVal= value; } 
} 

public double MemberVal 
{ 
get; set; 
} 

更新 除 - 由約翰內斯羅塞爾指出的 - 你可以從代碼中訪問在該領域第一種情況,但不在後者:-) -

這意味着在第一個代碼示例中,在您的班級中可以直接設置財產的背襯成員(即, private double memberVal1例如memberVal = 1.1;),其中在第二個中,該財產仍然有私人支持成員,但現在它是不可見的。
您只能通過屬性訪問它。

+2

除了您可以從第一種情況下的代碼訪問該字段,但不能在後者中訪問該字段:-) – Joey 2010-04-19 07:43:55

+0

第二個示例中的不可訪問的自動生成私有成員除外。 – cjk 2010-04-19 07:44:39

+0

有錯誤。 MemberVal是公開的。 – 2010-04-19 08:21:49

13

差不多。在第二個示例中,MemberVal不可公開訪問。

+1

這是錯誤的。 MemberVal是公開的。 – 2010-04-19 08:18:23

+0

@Samvel - 基於你的編輯,他們現在是相同的。第一個片段將使用比第二個片段多一個變量,但行爲是相同的。 – Matt 2010-04-19 08:22:15

+0

「第一個片段將使用比第二個片段多一個變量」。 。 。 ish。 。 。該類仍然有一個私人存儲成員的財產,它是自動生成和不可見,但可以通過反思和/或在IL中看到。 – 2010-04-19 08:34:22

3

是的,除了MemberVal沒有在第二個例子中公開(代表你的意思)之外,該代碼是等價的。在後一種情況下,編譯器會爲您生成一個字段。它會有另一個自動生成的名稱。

0
private double memberVal; 
public double MemberVal 
{ 
    get { return memberVal; } 
    set { memberVal= value; } 
} 

public double MemberVal 
{ 
    get; set; 
} 

代碼片段的第二部分不應該在.net 2.0上工作,因爲它是在.net 3.0中引入的。

第二個是第一個的簡寫符號,但只適用於.net 3.0或更高版本。

相關問題