Все остальные в значительной степени о вас прикрывают, но у меня есть еще один совет. Время от времени, вы будете получать кого-то, кто клянется в своей жизни (и в жизни своих близких), что .Equals
более эффективен / лучше / лучшая практика или какая-то другая догматическая линия. Я не могу говорить об эффективности (хорошо, хорошо, в определенных обстоятельствах я могу), но я могу говорить о большой проблеме, которая возникнет: .Equals
требует, чтобы объект существовал. (Звучит глупо, но это сбивает людей с толку.)
Вы не можете делать следующее:
StringBuilder sb = null;
if (sb.Equals(null))
{
// whatever
}
Для меня, и, возможно, для большинства людей, очевидно, что вы получите NullReferenceException
. Однако сторонники .Equals
забывают об этом маленьком факте. Некоторые даже «сбрасываются» (извините, не смогли устоять), когда они видят, что всплывающие подсказки NullRef начинают всплывать.
(И за годы до публикации DailyWTF я действительно работал с кем-то, кто уполномочил , чтобы все проверки на равенство были .Equals
вместо ==
. Даже доказательство его неточности не Это не помогло. Мы просто постарались нарушить все остальные его правила, чтобы ни одна из ссылок, возвращаемых методом, ни свойством никогда не была нулевой, и это сработало в конце.)