Правильно ли я понял, как работают Equals, ReferenceEquals and ==?
Личные типы и, возможно, массивы:
У ссылочных типов, если не переопределять:
Equals: сравниваются ссылки, но не свойства\поля, если они одинаковые
ReferenceEquals: сравниваются ссылки
==: сравниваются ссылки
Примитивные типы:
Значимые:
Equals: сравниваются значения с учётом типа
ReferenceEquals: сравниваются ссылки
==: сравниваются значения
Ссылочные:
Equals: сравниваются значения с учётом типа
ReferenceEquals: сравниваются ссылки
==: сравниваются значения с учётом типа
Нет, не правильно.
Equals - используется метод Equals, который по-умолчанию сравнивает ссылки, но часто он переопределён.
ReferenceEquals - сравниваются ссылки
== - вызывается оператор, который по-умолчанию не определён в принципе