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