16 февраля 2011 г.

Проверка на null в условии

Пара слов о проверке экземпляра класса на null. Типичный пример: пусть у нас в классе имеется коллекция, доступная всем методам внутри класса:

private List<string> Names;

Предполагается, что эта коллекция будет проинициализирована в конструкторе. Но что будет, если в конструкторе она не была проинициализирована, а в каком-нибудь методе будет проверяться какое-нибудь свойство этого объекта?

private bool CheckNames()
{
    // есть ли в коллекции хотя бы один элемент?
    if (Names.Count > 0)
        return true;
    return false;
}

Конечно же, произойдет исключение. Поэтому в том случае, если есть вероятность неинициализированной ссылки (а такая вероятность есть почти всегда!) - добавляйте в условие обязательно первым параметром проверку на null:

if (Names != null && Names.Count > 0)

Если будет обнаружена непроинициализированная ссылка, то остальные условия проверяться не будут. Таким образом, вы можете быть уверены, что в этом участке кода исключения NullReferenceExeption не возникнет.

Комментариев нет:

Отправить комментарий