可空的<T>结构

Pik*_*620 0 c# nullable structure

我阅读了Nullable Structure并了解其中的大部分内容.但我不知道人们何时以及为何会使用它.

Leo*_*Hat 5

C#具有的概念参考类型(类)和的类型(结构和内置类型如int,bool,DateTime等等).

引用类型可以有一个null值,表示它们尚未分配(或者它们具有"no"值).

值类型最初没有可空值的概念.它们在某些上下文中具有默认值(例如int,类中的字段的默认值为0).但他们没有"不"价值的概念.

输入Nullable<T>.

Nullable<T>(或其简写符号T?)表示可能具有或不具有值的值类型.

例如

int? foo = null; // No initial value
foo = 9; // Now it has a value
foo = null; // No value again
Run Code Online (Sandbox Code Playgroud)

并且有一些方法可以查询值是否存在,并检索它:

if (foo.HasValue)
{
    int actualValue = foo.Value;
}
Run Code Online (Sandbox Code Playgroud)

有用的一个方面是编写连接数据库的代码.许多数据库中的数字(整数)列可以配置为可为空.如果C#本身没有可空类型,则需要跳过箍来处理代码中的空DB值(例如,使用特殊的sentinel值来表示空DB值).可空类型使其以更加无缝的方式运行.