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.. но как и почему он знает, чтобы удалить объекты для их сравнения? Я пытаюсь понять, чем больше приключений здесь играет.