2010-07-12 3 views
2

Я хочу проверить, является ли ссылочный тип нулевым. Я вижу два варианта (_settings имеет тип FooType отсчета):проверить: null vs default()?

if (_settings == default(FooType)) { ... } 

и

if (_settings == null) { ... } 

Как эти два работают по-разному?

ответ

1

Я понимаю, что они не разные. Это имеет значение только тогда, когда вы имеете дело со значениями.

1

не отличается, но я думаю, что

if (_settings == null) { ... } 

понятнее.

2

Нет никакой разницы, но вторая более читаема. Лучшее место для использования default - это когда вы имеете дело с дженериками. Общий код: return default(T);

0

Я бы определенно пошел с конкретной проверкой на null. Потому что, если тип класса _settings когда-либо изменится, вы можете столкнуться с проблемами справки. Как минимум, это потребует изменения кода, нарушающего политику открытия/закрытия.

if(_settings == null) {...} 

Это ИМО безопаснее и чище.

0

Как уже было сказано, нет никакой разницы ... но может хотите использовать default(<type>) в любом случае, чтобы обрабатывать случаи, когда это не ссылочного типа. Обычно это только в дженериках, но это хорошая привычка формироваться для общего случая.

Смежные вопросы