首页 > 解决方案 > 两种可空类型之间的区别?

问题描述

这两者有什么区别

public Nullable<bool> val_a { get; set; } 
public bool? val_b { get; set; } 

这些都是 Nullable 类型。

另外我如何测试 val_b 在一行中是否可以为空?

标签: c#

解决方案


bool?是 的简写符号Nullable<bool>。他们是一样的。

文档

任何可为空的值类型都是通用 System.Nullable 结构的实例。您可以使用以下任何可互换形式引用具有基础类型 T 的可为空值类型:Nullable<T> 或 T?。

要测试是否val_bnull,只需检查val_b.HasValue. 例如:

if (val_b.HasValue)
{
   var b = val_b.Value;
}

您还可以执行以下操作:

var b = val_b.GetValueOrDefault();

或者

var b = val_b ?? false;

如果是. bool_defaultfalse

要将default值覆盖到true,您可以使用GetValueOrDefault重载:

var b = val_b.GetValueOrDefault(true);

推荐阅读