关于可空类型是否为空的判断

yuanlai123 2010-10-19 11:00:46
在codereview meeting上有同事说使用可空类型的.hasvalue()来判断变量是否为空比较好,请问哪位大侠讲讲深层次的原因?
例如:

int? test=1;
if(test.HasValue())
...
if(test!=null)
...

两个if 条件有什么深层次的区别?
...全文
227 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yudengchang 2010-10-20
  • 打赏
  • 举报
回复
可空类型可以像普通值类型一样的使用。事实上,可以使用内建的隐式转换来转换相同类型的可空变量和非可空变量。这意味着你可以在一个标准整型和可空整型之间相互转换:

int? nFirst = null;
int Second = 2;

nFirst = Second; // 有效
nFirst = 123; // 有效
Second = nFirst; // 同样有效

nFirst = null; // 有效
Second = nFirst; // 例外,后者是非空类型

在以上的语句里,你可以看到如果可空变量不包含空值的话是可以和非可空变量交换值的。如果它是一个空值,那么就会抛出例外。为了防止例外,你可以使用可空变量的HasValue属性:

if (nFirst.HasValue) Second = nFirst;

你可以看到,如果nFirst有值赋值就会发生,否则程序会跳过此句语句。
yudengchang 2010-10-20
  • 打赏
  • 举报
回复
顶............
wuyq11 2010-10-19
  • 打赏
  • 举报
回复
public struct Nullable<T> where T : struct
{

private bool hasValue;
internal T value;
public Nullable(T value)
{
this.value = value;
this.hasValue = true;
}

public bool HasValue
{
get
{
return this.hasValue;
}
}


}

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧