Пожалуйста, смотрите мой комментарий в коде ниже. Как мне проверить, чтобы параметр был null
? Похоже, что null
приводится к Foo
, что по существу делает рекурсивный вызов оператора ==
. Почему это происходит?
public class Foo
{
public static bool operator ==(Foo f1, Foo f2)
{
if (f1 == null) //This throw a StackOverflowException
return f2 == null;
if (f2 == null)
return f1 == null;
else
return f1.Equals((object)f2);
}
public static bool operator !=(Foo f1, Foo f2)
{
return !(f1 == f2);
}
public override bool Equals(object obj)
{
Foo f = obj as Foo;
if (f == (Foo)null)
return false;
return false;
}
public override int GetHashCode()
{
return 0;
}
}