2009-08-01 70 views
0
Public Class FooBar 
{ 
    private int _foo; 

    public int Foo { 
     get { return _foo; } 
     set { _foo = value; } 
    } 

    public void DoStuff() 
    { 
     _foo++; // Do this? 
     Foo++; // Or this? 
    } 
} 

是否有一種更爲接受的做法來訪問字段或屬性(如果存在)在類中?我一直習慣於訪問該領域,但由於我一直在做WPF,它有很多INotifyPropertyChanged,我發現自己需要訪問屬性才能更改通知。所以,現在我在整個類中都有字段和屬性訪問的組合,而從編譯器的角度來看,它沒有關係,風格和可讀性,這感覺......尷尬。來自申報類內的訪問字段或屬性

回答

2

當然有些情況下,訪問屬性沒有意義(例如,如果你正在實現屬性本身)。把這些案件放在一邊,我會默認使用屬性風格(除非我有一個特定的理由)。通過屬性訪問字段將把所有的變化引導到一個代碼路徑中,從而更容易地改變實現和調試,並且可能不太容易出錯。

+0

單一代碼路徑是一個很重要的原因,爲什麼我開始對我以前的所有字段都進行訪問時感到不舒服。如果我從字段開始,然後添加一堆屬性訪問,然後在我的屬性設置器中添加一些額外的功能,屬性訪問會觸及該屬性,但所有字段訪問都不會。 – kenwarner 2009-08-01 15:50:04

2

很多這歸結爲個人風格。這裏沒有100%正確或錯誤的答案。

我的選擇是通過屬性每次去的一對夫婦的原因

  • 使調試容易,因爲你可以在屬性訪問突破和看到所有的get/set值。不適用於字段
  • 一致性:在某些情況下,例如自動屬性,無法直接進入後備字段。每次瀏覽該屬性都會顯示相同的代碼訪問相同的值。
  • 性能:簡單的屬性是可能由JIT內聯,所以性能問題通常是一個靜音點。