如何定义私有成员行为,作为方法或属性? C#

时间:2013-11-01 20:23:50

标签: c# methods properties

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

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

什么更好?任何影响或只是视觉?

3 个答案:

答案 0 :(得分:3)

当然,感觉感觉对我来说更像是一种属性而不是一种方法 - 而且它确实与Nullable<T>.HasValue之类的东西保持一致。

需要考虑的其他差异:

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

不应对性能产生任何影响。

顺便说一句,我不是与false进行比较,而是将实现编写为:

return !string.IsNullOrEmpty(privateMember);

答案 1 :(得分:2)

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

答案 2 :(得分:0)

System.Nullable<T>使用属性HasValue,因此我将使用相同的方法与.NET Framework保持一致。