Как обьяснить странное поведение object.Equals при сравнении со строкой?
string s1 = "test";
string RuntimeS1 = "test1".Substring(0, 4); // интернирования нет
Console.WriteLine(object.ReferenceEquals(s1, RuntimeS1)); // false, expected
object ObjectCastedRuntimeS1 = RuntimeS1;
Console.WriteLine(ObjectCastedRuntimeS1.Equals(s1)); // true, wat ?!
Ответы (1 шт):
Автор решения: Andrew
→ Ссылка
Ничего странного, в первом случае ты сравниваешь референсы (ссылки на область оперативной памяти). Текст один, а в памяти лежат в разных местах
Во втором случае значения строк(видимо оно автоматом к строкам приводится). А строки одинаковые, потому и тру.