日期:2014-05-17  浏览次数:20817 次

请教一个关于C# == 比较的问题.
为什么struct不能进行==比较.EventHandler事件不能进行==比较.class可以进行==比较.object有没有进行==运算符重载?

------解决方案--------------------
我认为这是对值类型(ValueType)和引用类型(Object)执行==操作的不同语义产生的。
对于Object,== 和 equal一样,执行的是同一性检查操作,所以默认所有对象都可以执行==操作;
而对于ValueType, == 操作应该执行的是相等性检查操作,所以C#编译器就要求你显式进行操作符重载,才可以进行 == 操作,而且,如果重载==,一般要求同时重载equal方法。