2013-11-01 49 views
1

我有一個對象在另一個上下文中使用,我想驗證一個私有成員是否爲空或空(它的屬性公開)。最好在對象的類中聲明封裝行爲,而不是在每個使用時刻都進行驗證,但是問題是如果更好地將其作爲屬性或方法來執行驗證?用法如何將私人成員行爲定義爲方法或屬性? C#

public bool HasValue() 
{ 
    return String.IsNullOrEmpty(this.privateMember) == false; 
} 

public bool HasValue 
{ 
    get 
    { 
      return String.IsNullOrEmpty(this.privateMember) == false; 
    } 
} 

例子:

if(myObject.HasValue()){ 
} 

if(myObject.HasValue){ 
} 

什麼是好?任何影響或只是視覺?

+1

任何一個都沒問題。他們本質上是相同的 –

回答

3

那麼這肯定感覺更像一個屬性來我而不是一種方法 - 而且它肯定與Nullable<T>.HasValue等事情保持一致。

其他不同的考慮:

  • 通常你可以對綁定的屬性而不是方法;不知道你想要綁定反正
  • 你不能使用屬性進行方法組轉換(不幸的是)創建代表
  • 屬性在調試時自動評估;方法不是

應該不會有任何性能影響。

順便說一句,而不是反對false比較,我會寫的執行情況:

return !string.IsNullOrEmpty(privateMember); 
+1

+ 1的漂亮寫作。此外,@Maximus Decimus,請閱讀msdn中的這篇文章以獲得更深入的理解:http://msdn.microsoft.com/en-us/library/vstudio/ms229054(v=vs.100).aspx – PushCode

2

它沒有編譯器它只是視覺衝擊很多,但我更喜歡第二個我我總是做最討厭的():)

0

System.Nullable<T>使用屬性HasValue,所以我會用同樣的方法使用.NET框架的一致性。

+0

這是一個例子。我試圖驗證我自己的領域。 –

相關問題