C#의 문자열 클래스에서 비교 연산자로 구현 된 코드를 살펴 보았습니다. 무엇을 발견하는 것은이었다이 :문자열 등호 연산자 == in C#
//THIS IS NOT WHAT I MEANT
public static bool Equals(object objA, object objB)
{
return ((objA == objB) || (((objA != null) && (objB != null)) && objA.Equals(objB)));
}
//THIS IS WHAT I SEE REALLY and the above is what I would expect to see
public static bool Equals(string a, string b)
{
return ((a == b) || (((a != null) && (b != null)) && EqualsHelper(a, b)));
}
public static bool operator ==(string a, string b)
{
return Equals(a, b);
}
나는 그것이 나 트릭을 재생 반사경인지 모르겠지만, 나는 내 자신의 클래스에 대한이 전략을 구현하려고 할 때, 나는 같음 사이에 무한 루프를 가지고와 오버로드 된 == 연산자 (예상대로). 문자열 클래스에서 sth가 다른지 또는보고하는 리플렉터입니까
static Equals(object o1, object o2)
메서드가 String 클래스의 일부가 될 Object 클래스에 있습니까?
다음
==
연산자를 사용하지 않는? 인스턴스 메서드이기 때문에 정적 Equals 메서드와 같을 수 없습니다. 당신이 제공 한 코드를 기반으로, 나는 무한 루프를 보지 못했다. 우리가 인스턴스 Equals 메서드를 보여줄 수 있습니까? – ken죄송합니다.이 질문에 대한 업데이트를 작성했습니다. 잘못된 정의를 게시했습니다 ... – Bober02
내 opnion에서 무한한 것은 (a == b)가 Equals (문자열 a, 문자열 b)에서 호출 될 때 발생합니다. STATIC 타입의 a와 b는 문자열이므로 Overloaded 연산자 ==가 호출됩니다. 간단한 예제에서 이것을 확인했는데 여기에 sth가 있는지 여부는 여기에서 보지 못했습니다. 아니면 반사체입니다. – Bober02