Равно (элемент, ноль) или элемент == ноль ⇐ C#
-
Anonymous
Равно (элемент, ноль) или элемент == ноль
Является ли код, использующий статический Object.Equals для проверки значения null, более надежным, чем код, использующий оператор == или обычный Object.Equals? Не являются ли последние два уязвимыми для переопределения таким образом, что проверка на значение null не работает должным образом (например, возврат false, когда сравниваемое значение является null)?
Другими словами, это:
if (Equals(item, null)) { /* Сделать что-нибудь */ } более надежный, чем этот:
if (item == null) { /* Сделать что-нибудь */ } Лично я считаю, что последний синтаксис легче читать. Следует ли этого избегать при написании кода, который будет обрабатывать объекты, находящиеся вне контроля автора (например, библиотеки)? Следует ли всегда избегать этого (при проверке на ноль)? Это просто ерунда?
Является ли код, использующий статический Object.Equals для проверки значения null, более надежным, чем код, использующий оператор == или обычный Object.Equals? Не являются ли последние два уязвимыми для переопределения таким образом, что проверка на значение null не работает должным образом (например, возврат false, когда сравниваемое значение является null)?
Другими словами, это:
if (Equals(item, null)) { /* Сделать что-нибудь */ } более надежный, чем этот:
if (item == null) { /* Сделать что-нибудь */ } Лично я считаю, что последний синтаксис легче читать. Следует ли этого избегать при написании кода, который будет обрабатывать объекты, находящиеся вне контроля автора (например, библиотеки)? Следует ли всегда избегать этого (при проверке на ноль)? Это просто ерунда?
Мобильная версия