【问题标题】:How to define a private member behavior, as a method or property? C# [closed]如何将私有成员行为定义为方法或属性? C# [关闭]
【发布时间】:2013-11-01 20:23:49
【问题描述】:

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

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

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

【问题讨论】:

  • 任何一个都可以。它们本质上是一样的

标签: c# methods properties


【解决方案1】:

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

需要考虑的其他差异:

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

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

顺便说一句,与其与false 进行比较,我将实现写为:

return !string.IsNullOrEmpty(privateMember);

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 这是一个例子。我正在尝试验证我自己的领域。
    猜你喜欢
    • 2011-05-15
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 2021-01-09
    • 1970-01-01
    • 2012-11-05
    相关资源
    最近更新 更多