我正在尝试创建一个类似于.ToString()的方法来检查对象是否为null。我刚刚知道如何在不调用类
的情况下使其可访问public class ObjectExtensions
{
public static bool IsNull(object obj)
{
bool val = false;
if (obj == null)
{ val = true; }
return val;
}
}
答案 0 :(得分: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);
答案 1 :(得分: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条目的链接
答案 2 :(得分:1)
您认为需要静态方法是正确的。这是避免空值的空指针异常的唯一方法。你可以使用扩展方法伪造它:
public static class ObjectExtensions
{
public static bool IsNull(this object obj)
{
return obj == null;
}
}
另请注意,您的实施虽然有效,但过于复杂。您不需要超过一行来实现它。
答案 3 :(得分:1)
public static class ObjectExtensions
{
public static bool IsNull(this object obj)
{
return obj == null;
}
}