我想做一個方法類似於.ToString(),檢查對象是否爲null。我只是做了知道如何使它訪問,無需調用類如何使一個IsNull()方法
public class ObjectExtensions
{
public static bool IsNull(object obj)
{
bool val = false;
if (obj == null)
{ val = true; }
return val;
}
}
我想做一個方法類似於.ToString(),檢查對象是否爲null。我只是做了知道如何使它訪問,無需調用類如何使一個IsNull()方法
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)
{
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)
{
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條目的鏈接,Extension Methods
你當時在想,你需要一個靜態的方法是正確的。這是爲空值避免空指針異常的唯一方法。您可以使用擴展方法僞裝它:
public static class ObjectExtensions
{
public static bool IsNull(this object obj)
{
return obj == null;
}
}
另請注意,您的實現在工作時過於複雜。你不需要任何比這一行更多的實現。
public static class ObjectExtensions
{
public static bool IsNull(this object obj)
{
return obj == null;
}
}
爲什麼不只是'== null'?另外,你可以簡化你的方法體到'return obj == null;' – Wug