c# - 可空的结构
问题描述
我阅读了Nullable Structure并理解了其中的大部分内容。但我不知道人们何时以及为什么会使用它。
解决方案
C# 具有引用类型(类)和值类型(结构和内置类型,如int
、bool
、DateTime
等)的概念。
引用类型可以有一个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 的类型使其以更无缝的方式运行。
推荐阅读
- php - 数组分组和计数php
- ios - UICollectionView 中的图像不显示更改
- c++ - SFML RenderWindow 需要很长时间才能打开一个窗口
- arrays - 如何从 Microsoft 认知服务的响应中获取价值
- ruby - 项目在一台计算机上运行,但在另一台计算机上运行
- python - 为什么 math.isclose() 无法检测到非常大的值之间的微小差异?
- swift - Swift 类型检查器拒绝将具有类要求的协议作为类类型
- python - 在 Tensorflow 中使用 TPU 时,在本地驱动器中保存检查点是否有一个不错的解决方法?
- excel - 比较 2 个单元格之间的值,其中一个单元格具有自定义数字格式
- maven - 问题:Maven 编译抛弃 pom,“无法从/向中央传输……”