我遇到了以下问题的最佳方法:
public class Address
{
public Address() { }
public Address(string street)
{
Street = street;
}
public string Street { get; set; }
}
以上代码将创建一个仅包含街道property
的地址(对于此示例)。由于string
是引用类型,因此默认为null
。由于默认情况下街道property
将为空,因此此地址class
的用户必须先检查property
街道是否为空,然后再对其执行操作可能会引发异常
我现在的问题是,
更好properties
保留在class
中,其默认值为string = null
,int = 0
,...?property
一个值?这涉及strings
不是null
而是string.Empty
。这个问题的一般方法是什么?我试图在网上找到一些关于此的信息,但我不知道用好的搜索词来描述我真正想要找到的内容。主要问题归结为:如果未分配或更好地将properties
class
分配给null
default
值{} 1}}值?
答案 0 :(得分:1)
构造函数应始终将对象保持为有效状态。将属性保留在构造函数之外的唯一合法原因是该属性根据您的设计是可选的。如果构造函数保留了未分配的必需属性,则该对象将处于无效状态,因此应修复构造函数。
你问题的答案是"这取决于你的设计":
null
。对于像你这样的单属性类,让Street
保持未分配状态几乎没有意义,所以我会首先重新评估引入默认构造函数的设计原因。