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,然后再对其执行可能会引发异常的操作.
我现在的问题是,最好
- 将所有
properties
保留在 class
中,使用默认值 string = null
、int = 0
、...?
- 给每个
property
一个值?这涉及 strings
不是 null
,而是 string.Empty
。
解决这个问题的一般方法是什么?我试图在网上找到一些关于此的信息,但我不知道用什么搜索词来描述我真正想知道的内容。主要问题归结为:如果 class
中的所有 properties
没有被分配,最好给它们一个 null
值,还是让它们保留它们更好default
值?
构造函数应始终使您的对象处于有效状态。唯一 合法 保留 属性 未分配给构造函数的唯一理由是 属性 根据您的设计是可选的。如果构造函数未分配必需的 属性,则对象将处于无效状态,因此应修复构造函数。
你的问题的答案是"it depends on your design":
- 如果 属性 是可选的,请保留
null
。
- 如果需要 属性 并且您有合适的默认值,请将默认值分配给 属性
- 如果需要 属性 而您没有合适的默认值,请确保所有构造函数都分配了所需的 属性.
对于像你这样的单属性 class,不分配Street
几乎没有意义,所以我会重新评估在第一名.
我进退两难:解决以下问题的最佳方法是什么:
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,然后再对其执行可能会引发异常的操作.
我现在的问题是,最好
- 将所有
properties
保留在class
中,使用默认值string = null
、int = 0
、...? - 给每个
property
一个值?这涉及strings
不是null
,而是string.Empty
。
解决这个问题的一般方法是什么?我试图在网上找到一些关于此的信息,但我不知道用什么搜索词来描述我真正想知道的内容。主要问题归结为:如果 class
中的所有 properties
没有被分配,最好给它们一个 null
值,还是让它们保留它们更好default
值?
构造函数应始终使您的对象处于有效状态。唯一 合法 保留 属性 未分配给构造函数的唯一理由是 属性 根据您的设计是可选的。如果构造函数未分配必需的 属性,则对象将处于无效状态,因此应修复构造函数。
你的问题的答案是"it depends on your design":
- 如果 属性 是可选的,请保留
null
。 - 如果需要 属性 并且您有合适的默认值,请将默认值分配给 属性
- 如果需要 属性 而您没有合适的默认值,请确保所有构造函数都分配了所需的 属性.
对于像你这样的单属性 class,不分配Street
几乎没有意义,所以我会重新评估在第一名.