【问题标题】:Class property default value if not assigned [closed]如果未分配类属性默认值[关闭]
【发布时间】:2015-06-17 04:05:01
【问题描述】:

我有一个难题:解决以下问题的最佳方法是什么:

public class Address
{
    public Address() { }

    public Address(string street) 
    {
        Street = street;
    }

    public string Street { get; set; }
}

上面的代码将创建一个只有街道property 的地址(对于本示例)。因为string 是引用类型,所以默认为null。因为 Street property 默认为空,所以此地址 class 的用户必须先检查 property Street 是否为空,然后再对其执行可能引发异常的操作。

我现在的问题是,最好这样做

  1. class 中的所有properties 保留为默认值,例如string = nullint = 0、...?
  2. 给每个property一个值?这涉及strings 不是null 而是string.Empty

解决这个问题的一般方法是什么?我试图在网上找到一些关于此的信息,但我不知道描述我真正想知道的内容的好的搜索词。主要问题归结为:如果没有分配所有propertiesclass 值是否更好,或者最好保留default 值?

【问题讨论】:

    标签: c# class properties null default-value


    【解决方案1】:

    构造函数应该始终让您的对象处于有效状态。在构造函数之后保留未分配属性的唯一合法原因是,根据您的设计,该属性是可选的。如果构造函数未分配所需的属性,则对象将处于无效状态,因此应修复构造函数。

    您的问题的答案是“这取决于您的设计”:

    • 如果属性是可选的,请将其保留为null
    • 如果需要某个属性并且您有一个合适的默认值,请为该属性分配默认值
    • 如果需要属性并且您没有合适的默认值,请确保所有构造函数都分配了所需的属性。

    对于像你这样的单一属性类,让Street 未分配几乎没有意义,所以我会重新评估首先引入默认构造函数的设计原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 2013-12-22
      • 2020-08-16
      • 2016-09-10
      • 2012-01-05
      • 1970-01-01
      相关资源
      最近更新 更多