Строковый оператор равенства == в 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?