使用 HasValue、Value 判断和取 Nullable 的基础类型

法一、HasValue 和 Value

int? m = GetM();
if (m.HasValue)
{
    m.Value;
}

法二、!= null 和 Convert

int? m = GetM();
if (m != null)
{
    Convert.ToInt32(m);
}

HasValue 与 != null

这两个都是一样的。

HasValue 是属性,可能有些人不能理解,这都 null 了,怎么还能使用其属性呢?不出错吗?不出错,这是 Nullable 类型的特点。

注意:上面是 int? 类型,不能对 int 类型用 HasValue、!= null。

Value 与 Convert

Value 则要注意了,必须要有值,才能调用 Value,这跟 HasValue 不一样。

而 Convert 转换时,它是 null 也没问题,不会出错,结果是对应类型的默认值,int 是 0。

使用哪种方法都可以,看个人习惯、风格、实际场景。

你可能感兴趣的