Come evitare un NullReferenceException
-
06-09-2019 - |
Domanda
if (alMethSign[z].ToString().Contains(aClass.Namespace))
Qui, ho caricare un exe o dll e controllarne la spazio dei nomi. In alcune DLL, non c'è spazio dei nomi, quindi aclass.namespace
non è presente e sta gettando un NullReferenceException
.
Devo evitare proprio e dovrebbe continuare con resto del codice. Se uso try-catch, esegue la parte di cattura; Voglio che continui con il resto del codice.
Soluzione
È aClass
un'istanza Type
? Se è così - basta controllare per nulla:
if (aClass != null && alMethSign[z].ToString().Contains(aClass.Namespace))
Altri suggerimenti
Non intercettare l'eccezione. Invece, difendere contro di essa:
string nmspace = aClass.Namespace;
if (nmspace != null && alMethSign[z].ToString().Contains(nmspace))
{
...
}
Aggiungi il test per nulla nel if.
if(aClass.NameSpace != null && alMethSign[z].ToString().Contains(aClass.Namespace))
In alternativa, utilizzare un metodo di estensione a che verifica la presenza di eventuali valori null e né restituisce una stringa vuota o il valore stringa dell'oggetto:
public static string ToSafeString(this object o)
{
return o == null ? string.Empty : o.ToString();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow