Object t = 4;
Object s = 4;
if (t == s) { // false
}
List<Object> q = new List<object>() { t };
Boolean found = q.Contains(s); // found = true!
В приведенном выше кодексе меня не удивляет t == s
возвращение false
; он сравнивает ссылки на два объекта, а ссылки не совпадают.Почему Содержит объекты сравнения иначе, чем ==?
Но я удивлен тем, что Содержит возвращает истину; очевидно, это не просто сравнение ссылок на объекты .. это похоже на сравнение необоснованных значений 4 и 4 .. но как и почему он знает, чтобы удалить объекты для сравнения? Я пытаюсь понять, чем больше приключений здесь играет.
Я полагаю, что '==' по умолчанию ссылается на сравнительное сравнение того, где «Объекты» находятся в памяти, и поскольку они представляют собой два разных объекта; у них есть два разных места в памяти. Поэтому они не '=='. –