爲什麼它不產生一個錯誤?如果我嘗試更改主progrm文件中此結構的專用字段,它會生成錯誤,但不會在結構實現中。結構 - 進入私人領域
public struct MyStruct
{
private int privateField;
public int MyField
{
get { return privateField; }
set { if (value >= 0) privateField = value; else value = 0 }
}
public void SomeMethod (MyStyruct s)
{
s.privateField = 10; // no error here.
}
}
很好的答案(7分鐘後會接受最好的答案)。 Questoion 2:我應該使用privateField更快地讀取數據,還是使用MyField C#會優化閱讀? – zgnilec 2012-02-14 20:13:41
不要擔心這種微觀優化。使用該屬性,除非你創建一個拷貝構造函數。特別是因爲你的二傳手有特殊的邏輯。 – Osiris 2012-02-14 20:15:15
我不認爲你會通過使用privateField而不是MyField來獲得更多的性能。就我而言,這是一個風格問題,除非有特定的理由相對於另一個(即吸氣劑或二道過濾器中的特殊邏輯)。 – 2012-02-14 20:20:44