C#Nullable类型的编码实践

use*_*312 20 c# nullable

我从未在C#代码中使用过可空类型.现在我决定通过在我的代码中引入可空类型来改变我的编码实践.

在应用程序编程的情况下,在从普通数据类型转换为可空数据类型时,应该对编码实践进行哪些主要更改?

应该注意哪些方面?

我应该经常注意哪些要点?

Jas*_*ams 19

不要使用可空类型,因为它们是您发现的"酷新事物".在适用且真正有用的地方使用它们.

使用它们会产生开销,如果使用不当,会不必要地增加代码的复杂性.

您还必须小心避免空取消引用,因此它们会给使用该代码的程序员带来额外的负担.(在某些情况下,这比解决方法的成本更好!)

  • @JMSA:我不明白你想说什么. (5认同)

use*_*116 13

Nullable<T>当您需要值类型的可能无效状态,或者从可能包含null该列的值的数据库中检索数据时,此选项非常有用.在一些旧的FORTRAN代码中,我很常见的是移植到C#,无效值为负或0,但这很麻烦,尤其是在数学函数中使用这些值时.使用它Nullable<T>来表明可能的无效状态要明确得多.

值得一提的是,以下是相同的:

Nullable<int> myNullableInt;
int? myNullableInt;
Run Code Online (Sandbox Code Playgroud)

  • 提示:不要忘记,数据库中的null值由ADO.NET表示为DBNull.Value.确保使用DBNull.Value与DB进行通信,而不是Nullable <T>的null. (11认同)

you*_*hut 8

另外我发现以下属性很有用:

public bool? IsHappy { get; set; }
Run Code Online (Sandbox Code Playgroud)

这允许我有一个三态布尔值:是,否,没有回答.


LJM*_*LJM 5

使用可空类型的其他一些好主意:

  • 不要忘记语法的灵活性. Nullable<int>是相同的int?
  • 检查null(var.HasValue)并将其转换为基类型,然后再将其用作基类型.