Class 属性 如果未分配默认值

Class property default value if not assigned

我进退两难:解决以下问题的最佳方法是什么:

public class Address
{
    public Address() { }

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

    public string Street { get; set; }
}

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

我现在的问题是,最好

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

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

构造函数应始终使您的对象处于有效状态。唯一 合法 保留 属性 未分配给构造函数的唯一理由是 属性 根据您的设计是可选的。如果构造函数未分配必需的 属性,则对象将处于无效状态,因此应修复构造函数。

你的问题的答案是"it depends on your design":

  • 如果 属性 是可选的,请保留 null
  • 如果需要 属性 并且您有合适的默认值,请将默认值分配给 属性
  • 如果需要 属性 而您没有合适的默认值,请确保所有构造函数都分配了所需的 属性.

对于像你这样的单属性 class,不分配Street几乎没有意义,所以我会重新评估在第一名.