Есть ли дополнительные накладные расходы при использовании стилей метода object.ReferenceEquals
, используя ((object)obj1 == (object)obj2)
?
В первом случае будет задействован вызов статического метода, и в обоих случаях будет задействована некоторая форма каста для объекта.
Даже если компилятор уравновешивает эти методы, как насчет неравенства?
(object)obj != null
по сравнению с...
!object.ReferenceEquals(obj,null)
Я предполагаю, что в какой-то момент произойдет логическое отрицание либо внутри оператора! =, либо применительно к результату метода ReferenceEquals. Как вы думаете?
Также есть проблема читаемости. ReferenceEquals кажется более четким при проверке равенства, но для неравенства можно пропустить !
, предшествующий object.ReferenceEquals
, тогда как !=
в первом варианте трудно упустить.