C# 如何创建IsNull()方法

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; } }

我正在尝试创建一个类似于.ToString()的方法来检查对象是否为null。我只是知道如何在不给全班打电话的情况下让它变得可访问

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;
    }
}