我知道使用自動屬性時,編譯器會在屏幕後面創建自己的後臺字段。然而,在許多程序中,我讀了,我看到人們學會明確寫入有或沒有後場的自動屬性 - 偏好?
private int _backingField;
public int Property { get { return _backingField; } }
是什麼區別上方與下方?
public int Property { get; private set; }
我的理解是其明顯的使用屬性,當你確實有在getter或setter的副作用,但是這往往並非如此。另外,我知道你必須在結構的情況下明確地使用後臺字段,你不能通過屬性訪問他們的成員。
我一直能找到的唯一區別是調用該值的方式在它定義的類內部是不同的。它是簡單的首選項,還是有更多通過其屬性調用值或通過直接訪問該字段? 簡單的約定?
以XNA的Vector2爲例,如果我說 public Vector2 TheVector {get;組; } 我不能打電話 TheVector.X = 10; 相反,我必須使用實際的字段。關於通過價值/參考的事情。 (你有一些閱讀材料,澄清通過值/參考C#,作爲旁註?) – Taelia 2012-03-10 11:18:55
另外,如果我的兩個例子之間真的沒有區別,爲什麼這麼多人仍然明確地創建一個後場(沒有真正的目的)? – Taelia 2012-03-10 11:22:10
@Taelia:對,這就是我可以避免的可變結構。這是因爲該屬性返回值的一個副本。而且我不會試圖說出其他人做什麼的理由。 – 2012-03-10 11:24:05