之間的區別,我使用這兩個屬性什麼是以下屬性C#
1)
int x = 0;
public int X
{
get
{
return x;
}
set
{
x = value;
}
}
2)
public string ID
{
get;
set;
}
什麼是這兩個屬性之間的區別。
之間的區別,我使用這兩個屬性什麼是以下屬性C#
1)
int x = 0;
public int X
{
get
{
return x;
}
set
{
x = value;
}
}
2)
public string ID
{
get;
set;
}
什麼是這兩個屬性之間的區別。
沒有。兩者都是相同的,只是你可以從第一個片段中做到這一點,第二個片段不能做到這一點。
int x = 0;
public int X
{
get
{
return x;
}
set
{
if (value < 0) // A guard condition or some custom condition here
value = 0;
x = value;
}
}
爲了更明確的答案,你可以做
private double seconds;
public double Hours
{
get { return seconds/3600; }
set { seconds = value * 3600; }
}
然後簡單的變量和第二個片段之間有什麼區別。 –
你在第一次做的事情是由編譯器自動完成的。但是,如果您想在設置和提取值時控制局部變量和屬性的值,則可以使用我在答案中編寫的代碼段。 –
在聲明屬性作爲顯示在下面的例子中, 編譯器創建一個私有的,匿名的支持字段,可以只有 通過該屬性的get和set訪問器訪問。
Auto-Implemented Properties (C# Programming Guide)
唯一的區別是一個事實,即在你的例子你還可以直接獲得的,而不是使用屬性/設置的支持字段。有了自動實現的屬性,你不能這樣做。
如果你已經轉而問道,
「是什麼這兩個代碼之間的區別片段(不只是兩個屬性之間)?」
你可能已經猜到了自己的答案:在第一個代碼段,你需要做一個額外的事情:你需要顯式聲明支持字段爲你的財產,x
。在第二個代碼片段中,您不必這樣做,因爲編譯器會爲您做。因此
的兩個代碼段在功能上是相同的,不同之處在於在第一個代碼段,必須直接訪問屬性的支持字段(x
)的方式。在第二個片段中,沒有辦法做到這一點,因爲後臺字段是匿名/匿名的。
看看這個: - http://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx –