== или .Equals () - PullRequest
       48

== или .Equals ()

56 голосов
/ 28 сентября 2008

Зачем использовать один над другим?

Ответы [ 12 ]

1 голос
/ 28 сентября 2008

используйте equals, если вы хотите выразить содержимое сравниваемых объектов должно быть равно. используйте == для примитивных значений или если вы хотите проверить, что сравниваемые объекты - это один и тот же объект. Для объектов == проверяет, является ли указатель адреса объектов одинаковым.

0 голосов
/ 16 июня 2015

Если вы дизассемблируете (например, dotPeek) Object, то

public virtual bool Equals(Object obj)

описывается как:

// Returns a boolean indicating if the passed in object obj is
// Equal to this.  Equality is defined as object equality for reference
// types and bitwise equality for value types using a loader trick to
// replace Equals with EqualsValue for value types). 
//

Итак, это зависит от типа. Например:

        Object o1 = "vvv";
        Object o2 = "vvv";
        bool b = o1.Equals(o2);

        o1 = 555;
        o2 = 555;
        b = o1.Equals(o2);

        o1 = new List<int> { 1, 2, 3 };
        o2 = new List<int> { 1, 2, 3 };
        b = o1.Equals(o2);

Первый раз b равен true (выполняется одинаково для типов значений), второй раз b равен true (выполняется равным для типов значений), третий раз b равен false (равенство выполняется для ссылочных типов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...