Как избежать NullReferenceException

 if (alMethSign[z].ToString().Contains(aClass.Namespace))

Здесь я загружаю exe или dll и проверяю его пространство имен. В некоторых dll нет пространства имен, поэтому aclass.namespace отсутствует и выдает NullReferenceException.

Я должен просто избегать этого, и он должен продолжаться с остальной частью кода. Если я использую try-catch, он выполняет часть catch; Я хочу, чтобы это продолжалось с остальной частью кода.


person Arunachalam    schedule 09.04.2009    source источник
comment
Почти все случаи NullReferenceException одинаковы. Дополнительные подсказки см. в разделе Что такое NullReferenceException в .NET?.   -  person John Saunders    schedule 04.04.2014


Ответы (4)


Является ли aClass экземпляром Type? Если да - просто проверьте его на ноль:

if (aClass != null && alMethSign[z].ToString().Contains(aClass.Namespace))
person Marc Gravell    schedule 09.04.2009

Не поймать исключение. Вместо этого защищайтесь от него:

string nmspace = aClass.Namespace;

if (nmspace != null && alMethSign[z].ToString().Contains(nmspace))
{
    ...
}
person Jon Skeet    schedule 09.04.2009

Добавьте проверку на null в операторе if.

if(aClass.NameSpace != null && alMethSign[z].ToString().Contains(aClass.Namespace))
person Megacan    schedule 09.04.2009

Или используйте метод расширения, который проверяет наличие нулей и либо возвращает пустую строку, либо строковое значение объекта:

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

}
person Community    schedule 09.04.2009