string s1 = "t";
string s2 = 't'.ToString();
Console.WriteLine(s1.Equals(s2)); // returning true
Console.WriteLine(object.Equals(s1, s2)); // returning true
여기는 같은 결과를 반환합니다. 이제 StringBuilder를 사용할 때 같은 값을 반환하지 않습니다. 밑에있는 이유는 무엇입니까?왜 object.Equals와 instanceobject.Equals가 같지 않음
StringBuilder s1 = new StringBuilder();
StringBuilder s2 = new StringBuilder();
Console.WriteLine(s1.Equals(s2)); // returning true
Console.WriteLine(object.Equals(s1, s2)); // returning false
EDIT1 : 아래의 응답 내 위의 질문입니다. 그러나이 토론에서 StringBuilder는 구현시 Equals 메서드를 재정의하지 않습니다. 그래서 우리는 StringBuilder.Equals를 호출 할 때 실제로 Object.Equals로갑니다. 따라서 누군가가 StringBuilder.Equals와 S1.Equals (S2)를 호출하면 결과가 달라집니다. 그들은 이러한 StringBuilder
같은 참조 타입 참조 평등 있다면
좋은 캐치! 요컨대,'StringBuilder'는'Equals (object)'를 오버라이드하는 것을 잊어 버리는 것 같습니다. 'Equals (StringBuilder)'가 'Equals (object)'와 다른 동작을하는 것은 직관력이없는 것처럼 보입니다. – leppie