2009-04-09 99 views
1
if (alMethSign[z].ToString().Contains(aClass.Namespace)) 

在這裏,我加載一個exe或dll並檢查其命名空間。在某些dll中,沒有命名空間,所以aclass.namespace不存在,它拋出NullReferenceException如何避免NullReferenceException

我必須避免它,它應該繼續其餘的代碼。如果我使用try-catch,它會執行catch部分;我希望它繼續其餘的代碼。

+0

幾乎`NullReferenceException`的所有的情況下都是相同的。請參閱「[什麼是.NET中的NullReferenceException?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net)」的一些提示。 – 2014-04-04 17:31:13

回答

3

aClass一個Type實例?如果是這樣 - 只需檢查它是否爲空:

if (aClass != null && alMethSign[z].ToString().Contains(aClass.Namespace)) 
13

不要捕捉異常。相反,抵禦它:

string nmspace = aClass.Namespace; 

if (nmspace != null && alMethSign[z].ToString().Contains(nmspace)) 
{ 
    ... 
} 
4

在if語句中添加null測試。

if(aClass.NameSpace != null && alMethSign[z].ToString().Contains(aClass.Namespace)) 
0

或對檢查任何空值和任一返回一個空字符串或對象的字符串值使用一個擴展方法:

public static string ToSafeString(this object o) 
{ 
return o == null ? string.Empty : o.ToString(); 

}