公共 Csharp 欄位
2004 年 2 月 4 日
當我第一次接觸 C# 時,我就喜歡屬性的概念。C++/Java 的 getX 和 setX 約定俗成對我來說總是顯得有點愚蠢,寫成 obj.X = other.X
自然多了。提供一個具有 get 和 set 方法的屬性,將一個常見的約定俗成轉變為語言的自然支援功能。
我喜歡它的另一個原因是,從語言的角度來看,屬性和欄位看起來是一樣的。因此,如果我有一個欄位 x,我可以對它進行讀寫,我可以只將它宣告為一個欄位。我不擔心這會違反封裝,因為如果我想做更花俏的事,我稍後可以將它替換為一個屬性。這一切都省去了許多愚蠢的存取函式的輸入。
唉,事情沒那麼簡單。欄位和屬性在程式碼文字方面具有相同的存取權,但它們在反射中以不同的方式表示。因此,如果你在欄位和屬性之間切換,使用反射的各種工具將會損壞。
因此,現在我必須為可存取的資料值撰寫愚蠢的存取函式。嘆。(或使用 Ruby。)