要检查对象是否为null,您可以执行以下任一操作:
var myObject = DoSomeCallThatMayReturnNull();
var myString = string.Empty;
Run Code Online (Sandbox Code Playgroud)
.
if (myObject == null)
myString = "null";
Run Code Online (Sandbox Code Playgroud)
- 要么 -
if (Object.ReferenceEquals(null, myObject))
myString = "null";
Run Code Online (Sandbox Code Playgroud)
在某些情况下使用null coallescing运算符??.然而,我想要添加一个IsNull的扩展方法,以便我可以执行以下操作:
if (myObject.IsNull())
Run Code Online (Sandbox Code Playgroud)
对于像int这样的可空类型?也能做到:
if (myInt.IsNull())
Run Code Online (Sandbox Code Playgroud)
我天真的实施是:
public static bool IsNull(this Object aObject)
{
return aObject == null;
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
Tho*_*que 12
我会像这样实现它:
static class Extensions
{
public static bool IsNull<T>(this T obj) where T : class
{
return obj == null;
}
public static bool IsNull<T>(this T? obj) where T : struct
{
return !obj.HasValue;
}
}
Run Code Online (Sandbox Code Playgroud)
这样,除了可空值类型之外,它不能在值类型(永远不为null)上调用.
但是我不相信该方法的用处......只需与null进行比较就是可读的.