我有一个整数值,我需要检查它是否为NULL.我使用null-coalescing运算符得到它
C#:
public int? Age;
if ((Age ?? 0)==0)
{
// do somethig
}
Run Code Online (Sandbox Code Playgroud)
现在我必须检查一个旧的应用程序,其中声明部分不是三元组.那么,如何在没有null合并运算符的情况下实现这一点.
Ada*_*rth 108
Nullable<T>(或?)公开一个HasValue标志来表示是否设置了值或该项是否为空.
此外,可空类型支持==:
if (Age == null)
该??是空合并运算符,不会导致布尔表达式,但返回值:
int i = Age ?? 0;
Run Code Online (Sandbox Code Playgroud)
所以对于你的例子:
if (age == null || age == 0)
Run Code Online (Sandbox Code Playgroud)
要么:
if (age.GetValueOrDefault(0) == 0)
Run Code Online (Sandbox Code Playgroud)
要么:
if ((age ?? 0) == 0)
Run Code Online (Sandbox Code Playgroud)
或者三元:
int i = age.HasValue ? age.Value : 0;
Run Code Online (Sandbox Code Playgroud)
Ode*_*ded 14
几件事:
Age不是整数 - 它是可以为空的整数类型.他们不一样.有关Nullable<T>详细信息,请参阅MSDN上的文档.
??是null coalesce运算符,而不是三元运算符(实际上称为条件运算符).
要检查可空类型是否具有值使用HasValue,或直接检查null:
if(Age.HasValue)
{
// Yay, it does!
}
if(Age == null)
{
// It is null :(
}
Run Code Online (Sandbox Code Playgroud)