Пара слов о проверке экземпляра класса на null. Типичный пример: пусть у нас в классе имеется коллекция, доступная всем методам внутри класса:
private List<string> Names;
Предполагается, что эта коллекция будет проинициализирована в конструкторе. Но что будет, если в конструкторе она не была проинициализирована, а в каком-нибудь методе будет проверяться какое-нибудь свойство этого объекта?
private bool CheckNames()
{
// есть ли в коллекции хотя бы один элемент?
if (Names.Count > 0)
return true;
return false;
}
Конечно же, произойдет исключение. Поэтому в том случае, если есть вероятность неинициализированной ссылки (а такая вероятность есть почти всегда!) - добавляйте в условие обязательно первым параметром проверку на null:
if (Names != null && Names.Count > 0)
Если будет обнаружена непроинициализированная ссылка, то остальные условия проверяться не будут. Таким образом, вы можете быть уверены, что в этом участке кода исключения NullReferenceExeption не возникнет.
private List<string> Names;
Предполагается, что эта коллекция будет проинициализирована в конструкторе. Но что будет, если в конструкторе она не была проинициализирована, а в каком-нибудь методе будет проверяться какое-нибудь свойство этого объекта?
private bool CheckNames()
{
// есть ли в коллекции хотя бы один элемент?
if (Names.Count > 0)
return true;
return false;
}
Конечно же, произойдет исключение. Поэтому в том случае, если есть вероятность неинициализированной ссылки (а такая вероятность есть почти всегда!) - добавляйте в условие обязательно первым параметром проверку на null:
if (Names != null && Names.Count > 0)
Если будет обнаружена непроинициализированная ссылка, то остальные условия проверяться не будут. Таким образом, вы можете быть уверены, что в этом участке кода исключения NullReferenceExeption не возникнет.
Комментариев нет:
Отправить комментарий