片段:這2個部分相同嗎?
private double memberVal;
public double MemberVal
{
get { return memberVal; }
set { memberVal= value; }
}
和
public double MemberVal
{
get; set;
}
片段:這2個部分相同嗎?
private double memberVal;
public double MemberVal
{
get { return memberVal; }
set { memberVal= value; }
}
和
public double MemberVal
{
get; set;
}
沒有,但現在他們是相同的
private double memberVal;
public double MemberVal
{
get { return memberVal; }
set { memberVal= value; }
}
和
public double MemberVal
{
get; set;
}
更新 除 - 由約翰內斯羅塞爾指出的 - 你可以從代碼中訪問在該領域第一種情況,但不在後者:-) -
這意味着在第一個代碼示例中,在您的班級中可以直接設置財產的背襯成員(即, private double memberVal1
例如memberVal = 1.1;
),其中在第二個中,該財產仍然有私人支持成員,但現在它是不可見的。
您只能通過屬性訪問它。
差不多。在第二個示例中,MemberVal
不可公開訪問。
這是錯誤的。 MemberVal是公開的。 – 2010-04-19 08:18:23
@Samvel - 基於你的編輯,他們現在是相同的。第一個片段將使用比第二個片段多一個變量,但行爲是相同的。 – Matt 2010-04-19 08:22:15
「第一個片段將使用比第二個片段多一個變量」。 。 。 ish。 。 。該類仍然有一個私人存儲成員的財產,它是自動生成和不可見,但可以通過反思和/或在IL中看到。 – 2010-04-19 08:34:22
是的,除了MemberVal沒有在第二個例子中公開(代表你的意思)之外,該代碼是等價的。在後一種情況下,編譯器會爲您生成一個字段。它會有另一個自動生成的名稱。
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或更高版本。
除了您可以從第一種情況下的代碼訪問該字段,但不能在後者中訪問該字段:-) – Joey 2010-04-19 07:43:55
第二個示例中的不可訪問的自動生成私有成員除外。 – cjk 2010-04-19 07:44:39
有錯誤。 MemberVal是公開的。 – 2010-04-19 08:21:49