C# 如何创建IsNull()方法
我正在尝试创建一个类似于.ToString()的方法来检查对象是否为null。我只是知道如何在不给全班打电话的情况下让它变得可访问C# 如何创建IsNull()方法,c#,isnull,C#,Isnull,我正在尝试创建一个类似于.ToString()的方法来检查对象是否为null。我只是知道如何在不给全班打电话的情况下让它变得可访问 public class ObjectExtensions { public static bool IsNull(object obj) { bool val = false; if (obj == null) { val = true; } return val; } }
public class ObjectExtensions
{
public static bool IsNull(object obj)
{
bool val = false;
if (obj == null)
{ val = true; }
return val;
}
}
您的类需要是静态的,并且在扩展变量类型之前需要“this”关键字:
public static class ObjectExtensions
{
public static bool IsNull(this object obj)
{
bool val = false;
if (obj == null)
{ val = true; }
return val;
}
}
此外,在执行单个布尔检查时,可以直接返回其结果:
public static class ObjectExtensions
{
public static bool IsNull(this object obj)
{
return obj == null;
}
}
这里有一个指向MSDN条目的链接,您缺少了
这个
修饰符,使它成为一个真正的扩展方法,并使对象保持静态
public static class ObjectExtensions
{
public static bool IsNull(this object obj)
{
return obj == null;
}
}
那么你可以这样称呼它:
var fooIsNull = foo.IsNull();
// which is syntactic sugar for
fooIsNull = ObjectExtensions.IsNull(foo);
您认为需要静态方法是正确的。这是避免空值出现空指针异常的唯一方法。不过,您可以使用扩展方法来伪造它:
public static class ObjectExtensions
{
public static bool IsNull(this object obj)
{
return obj == null;
}
}
还要注意,您的实现在工作时过于复杂。实现这一点只需要一行就可以了。为什么不干脆
==null
?此外,还可以将方法体简化为返回obj==null代码>
public static class ObjectExtensions
{
public static bool IsNull(this object obj)
{
return obj == null;
}
}