当前位置:首页 > 开发教程 > .net教程 >

C#和F#重载相等运算符的区别

时间:2014-04-18 08:51 来源:互联网 作者:源码搜藏 收藏

在C#中 == 和 != 默认是对引用地址作比较,如果要改成对其内涵做比较,则需要重载。 一般要重载两个运算符和两个函数: 函数 Equals 、函数 GetHashCode 、运算符 == ,和运算符 != 这里分两组, 函数 Equals 、函数 GetHashCode ,这一组是系统比较对象时候 在C#中 == 和 !=默认是对引用地址作比较,如果要改成对其内涵做比较,则需要重载。一般要重载两个运算符和两个函数:
 函数Equals、函数
GetHashCode、运算符 ==,和运算符 !=
 这里分两组, 
函数Equals、函数GetHashCode,这一组是系统比较对象时候使用,譬如把对象放在Hashtable容器里面,系统会作出比较,排斥相同的对象。
 函数EqualsGetHashCode必须一起重载。

 用户比较两个对象内涵的时候,不重载==和 !=,直接使用重载的Equals是可以的,但是如果重载使用 == 和 != ,会更直观。
 这一组两个运算符也必须同时重载,只重载一项的话,编译器会做出相应提示。
 
回到F#中,对应C# == 和 != 的是 = 和 <>
试图重载 = 或<>,编译器会提示你重载Equals即可。用户调用运算符 = 和<> 时,会自动调用 Equals。然而重载Equals就必须重载GetHashCode。所以我们重载这一组函数即可。

.net教程阅读排行

最新文章