在codereview meeting上有同事说使用可空类型的.hasvalue()来判断变量是否为空比较好,请问哪位大侠讲讲深层次的原因?
例如: int? test=1;
if(test.HasValue())
...
if(test!=null)
...两个if 条件有什么深层次的区别?
例如: int? test=1;
if(test.HasValue())
...
if(test!=null)
...两个if 条件有什么深层次的区别?
{private bool hasValue;
internal T value;
public Nullable(T value)
{
this.value = value;
this.hasValue = true;
} public bool HasValue
{
get
{
return this.hasValue;
}
}
}
int Second = 2;nFirst = Second; // 有效
nFirst = 123; // 有效
Second = nFirst; // 同样有效nFirst = null; // 有效
Second = nFirst; // 例外,后者是非空类型 在以上的语句里,你可以看到如果可空变量不包含空值的话是可以和非可空变量交换值的。如果它是一个空值,那么就会抛出例外。为了防止例外,你可以使用可空变量的HasValue属性:if (nFirst.HasValue) Second = nFirst; 你可以看到,如果nFirst有值赋值就会发生,否则程序会跳过此句语句。