G
Glucklich
Если посмотреть в реализацию оператора == типа String можно увидеть следующее:
Реализация Equals следующая:
Видно, что внутри присутстсвует оператор ==.
Так вот почему не происходит зацикливаение?
В моем примере кидает исключение StackOverflowException:
Ну и где-то вызов:
В чем прикол?
Код:
public static bool operator ==(string a, string b)
{
return Equals(a, b);
}
Реализация Equals следующая:
Код:
public static bool Equals(string a, string b)
{
return ((a == b) || (((a != null) && (b != null)) && EqualsHelper(a, b)));
}
Видно, что внутри присутстсвует оператор ==.
Так вот почему не происходит зацикливаение?
В моем примере кидает исключение StackOverflowException:
Код:
class Class1
{
public static bool operator ==(Class1 a, Class1 b)
{
return Equals(a, b);
}
public static bool operator !=(Class1 a, Class1 b)
{
return !Equals(a, b);
}
public static bool Equals(Class1 a, Class1 b)
{
return ((a == b) || ((a != null) && (b != null)));
}
}
Ну и где-то вызов:
Код:
private void button1_Click(object sender, EventArgs e)
{
Class1 a = new Class1();
Class1 b = new Class1();
MessageBox.Show((a == b).ToString());
}
В чем прикол?