2

我正在尝试创建一个类似于 .ToString() 的方法来检查对象是否为空。我刚刚知道如何在不调用类的情况下使其可访问

public class ObjectExtensions
{
    public static bool IsNull(object obj)
    {
        bool val = false;
        if (obj == null)
        { val = true; }
        return val;
    }
}
4

4 回答 4

10

您缺少this修饰符以使其成为真正的扩展方法以及使对象成为静态对象。

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);
于 2012-11-06T18:25:16.713 回答
2

您的类需要是静态的,并且在扩展变量类型之前需要“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 条目的链接

于 2012-11-06T18:25:03.033 回答
1

你认为你需要一个静态方法是正确的。这是避免空值出现空指针异常的唯一方法。您可以使用扩展方法伪造它:

public static class ObjectExtensions
{
    public static bool IsNull(this object obj)
    {
        return obj == null;
    }
}

另请注意,您的实现虽然有效,但过于复杂。您只需要一行就可以实现这一点。

于 2012-11-06T18:25:22.440 回答
1
public static class ObjectExtensions
{
    public static bool IsNull(this object obj)
    {
        return obj == null;
    }
}
于 2012-11-06T18:25:36.557 回答