首页 > 解决方案 > 可空的结构

问题描述

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

标签: c#structurenullable

解决方案


C# 具有引用类型(类)和类型(结构和内置类型,如intboolDateTime等)的概念。

引用类型可以有一个null值,表明它们没有被赋值(或者它们有“无”值)。

值类型最初没有可空值的概念。它们在某些上下文中具有默认值(例如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

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

if (foo.HasValue)
{
    int actualValue = foo.Value;
}

这很有用的一个领域是编写代码以连接到数据库时。许多数据库中的数字(整数)列可以配置为可为空。如果 C# 本身中没有可为空的类型,您需要跳过箍来处理代码中的空 DB 值(例如,使用特殊的哨兵值来表示空 DB 值)。可为 Null 的类型使其以更无缝的方式运行。


推荐阅读