c# - 两种可空类型之间的区别?
问题描述
这两者有什么区别
public Nullable<bool> val_a { get; set; }
public bool? val_b { get; set; }
这些都是 Nullable 类型。
另外我如何测试 val_b 在一行中是否可以为空?
解决方案
bool?
是 的简写符号Nullable<bool>
。他们是一样的。
从文档:
任何可为空的值类型都是通用 System.Nullable 结构的实例。您可以使用以下任何可互换形式引用具有基础类型 T 的可为空值类型:Nullable<T> 或 T?。
要测试是否val_b
是null
,只需检查val_b.HasValue
. 例如:
if (val_b.HasValue)
{
var b = val_b.Value;
}
您还可以执行以下操作:
var b = val_b.GetValueOrDefault();
或者
var b = val_b ?? false;
如果是. bool
_default
false
要将default
值覆盖到true
,您可以使用GetValueOrDefault
重载:
var b = val_b.GetValueOrDefault(true);
推荐阅读
- asp.net - 通过 ASP.NET 运行 SQL Server 代理作业,我可以知道操作是否成功
- c# - ASP.NET SOAP Webservice,异常中的编码问题
- asp.net - 锚标记助手自动将区域添加到区域视图中的链接
- raku - Raku/Perl6:如何使用 NativeCall 编写 NULL
- python - Python:将代理代理库与 asyncio 一起使用的正确方法
- c# - 当浏览器在 MVC 中关闭时停止会话过期
- python - 仅在 Django REST Framework 的 GET 方法中的一个对象
- python - PyQt5 将选项卡的大小调整为其内容
- android - 如何在 notifyDataSetChanged 上禁用 recyclerview 滚动到顶部(第一项)
- python - pandas.DataFrame.replace 更改列的 dtype