我从未在C#代码中使用过可空类型。现在我决定通过在我的代码中引入可空类型来改变我的编码实践。
在应用程序编程的情况下,在从普通数据类型转换为可空数据类型时,应该对编码实践进行哪些主要更改?
应该注意哪些方面?
我应该经常注意哪些要点?
答案 0 :(得分:19)
不要使用可空类型,因为它们是您发现的“酷新事物”。 在适用且真正有用的地方使用它们。
使用它们会产生开销,如果使用不当,会不必要地增加代码的复杂性。
您还必须小心避免空取消引用,因此它们会给使用该代码的程序员带来额外的负担。 (在某些情况下,这比解决方法的成本更好!)
答案 1 :(得分:13)
null
值的数据库中检索数据时, Nullable<T>
非常有用。在一些旧的FORTRAN代码中,我很常见的是移植到C#,无效值为负或0,但这很麻烦,尤其是在数学函数中使用这些值时。使用Nullable<T>
来表明可能的无效状态要明确得多。
值得一提的是,以下是相同的:
Nullable<int> myNullableInt;
int? myNullableInt;
答案 2 :(得分:8)
此外,我发现以下属性很有用:
public bool? IsHappy { get; set; }
这允许我有一个三态布尔值:是,否,没有回答。
答案 3 :(得分:5)
使用可空类型的其他一些好主意:
Nullable<int>
与int?
var.HasValue
)并将其转换为基本类型。答案 4 :(得分:2)
它们似乎适合某些值类型变量的起始值。
int? lastCodeReceived;
if (lastCodeReceived.HasValue)
{
// At least one code has been received.
}
答案 5 :(得分:1)
我很少使用可空类型。我使用它们的唯一地方是当我在数据库中处理空类型时。