, object.ReferenceEquals(foo, null):
(object)foo == null
, .
IEquatable<T> , Equals. Equals(object) Equals(Foo).
public override bool Equals(object other){return Equals(other as Foo);}
:
public static bool operator==(Foo a, Foo b){
if((object)a == null)
return (object)b == null;
return a.Equals(b);
}
public static bool operator!=(Foo a, Foo b){
return !(a == b);
}
, , , (object)foo == null object.ReferenceEquals(foo, null), , .