1

我有一个在另一个上下文中使用的对象,我想验证私有成员是否为空或空(由其属性公开)。最好在对象的类中声明以封装行为,而不是在使用的每一刻都进行验证,但问题是作为属性或方法是否更好?

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){
}

什么是更好的?有什么影响还是只是视觉上的?

4

3 回答 3

3

嗯,这对我来说肯定更像是一种属性,而不是一种方法——而且它肯定与Nullable<T>.HasValue.

其他需要考虑的差异:

  • 您通常可以绑定属性但不能绑定方法;不确定您是否要对此进行绑定
  • 您不能使用方法组转换的属性(不幸的是)来创建委托
  • 调试时会自动评估属性;方法不是

不应该有任何性能影响。

顺便说一句false,我将实现编写为:

return !string.IsNullOrEmpty(privateMember);
于 2013-11-01T20:27:15.313 回答
2

它对编译器没有太大影响,它只是视觉效果,但我更喜欢第二个,我总是讨厌 () :)

于 2013-11-01T20:26:37.543 回答
0

System.Nullable<T>使用 property HasValue,所以我将使用相同的方法来与 .NET Framework 保持一致。

于 2013-11-01T20:29:03.807 回答