2012-11-06 48 views
2

我想做一個方法類似於.ToString(),檢查對象是否爲null。我只是做了知道如何使它訪問,無需調用類如何使一個IsNull()方法

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

爲什麼不只是'== null'?另外,你可以簡化你的方法體到'return obj == null;' – Wug

回答

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); 
2

你的類需要是靜態的,你需要的擴展變量類型前的「這個」關鍵詞:

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

1

你當時在想,你需要一個靜態的方法是正確的。這是爲空值避免空指針異常的唯一方法。您可以使用擴展方法僞裝它:

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

另請注意,您的實現在工作時過於複雜。你不需要任何比這一行更多的實現。

1
public static class ObjectExtensions 
{ 
    public static bool IsNull(this object obj) 
    { 
     return obj == null; 
    } 
} 
相關問題