刚刚重载顺手了,把自己定义的一个类的==重载了。结果比较惨,后知后觉发现一个绕不过去的地方:
如果用Equals调用重载的==,那么如果表达式是 obj == null,那么,挂了……
如果==调用Equals,更不用说,要是类型不对,都难判断的……况且,null也没有GetType()一说……
最后查到到msdn上 这样说:
如果用Equals调用重载的==,那么如果表达式是 obj == null,那么,挂了……
如果==调用Equals,更不用说,要是类型不对,都难判断的……况且,null也没有GetType()一说……
最后查到到msdn上 这样说:
Implementing the Equality Operator (==) on Reference Types
Most languages do provide a default implementation of the equality operator (==) for reference types. Therefore, you should use care when implementing == on reference types. Most reference types, even those that implement the Equals method, should not override ==.
所以,算是个教训,没事不要重载 类 的==操作符……