Строковый оператор равенства == в c #

Я попытался заглянуть в код, реализованный для оператора сравнения в строковом классе в 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);
}

Я не знаю, играет ли это Reflector, но когда я попытался реализовать эту стратегию для своего собственного класса, я получил бесконечный цикл между Equals и перегруженным оператором == (как и ожидалось). Есть ли что-то другое в строковом классе или это мой отражатель, который сообщает

static Equals(object o1, object o2)

метод класса Object должен быть частью класса String?

Ответы на вопрос(4)

Ваш ответ на вопрос