首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C#内建接口:IEquatable泛型

这节来讲一下泛型接口:IEquatableIEquatable泛型接口处于System.Runtime命名空间下,最早在.NET Framework 2.0中发布,只有泛型版本。...IEquatable中有什么?...我们先看一下IEquatable泛型接口中的元素: 这个接口里边只有一个方法:Equals,返回一个Bool值,从名称中我们可以得知,这个接口规定了一个用于和其它类型作比较的规范,所有实现了这个接口的类...但是这个方法接受一个Object类型的参数,存在装箱和类型安全这样的问题,因此我们也有可能需要一个性能高一些的,并且类型安全的比较方法,为了规范代码,微软推出了IEquatable泛型接口。...我们可以认为Object的Equals是IEquatable的非泛型版本方法,但是在实际应用过程中,我还是推荐大家显式实现IEquatable,有一个良好的代码规范,会让人舒心,关于显示实现接口相关介绍请查看

43321
您找到你想要的搜索结果了吗?
是的
没有找到

自定义值类型一定不要忘了重写Equals,否则性能和空间双双堪忧

public struct Int32 : IComparable, IFormattable, IConvertible, IComparable, IEquatable {...补上 IEquatable 接口 有了这个思路,我也跟FCL学,让Point实现 IEquatable接口,然后在TProxy代理类中约束下必须实现IEquatable,修改代码如下:...public struct Point : IEquatable { ... } public class TProxy where T: IEquatable接口,所以代码返回了一个泛型比较器:GenericEqualityComparer,然后我们继续查看这个泛型比较器是咋样的。 ?...从图中可以看到最终还是对T进行了IEquatable约束,不过这里给提取出来了,还是挺厉害的,然后我也学的模仿一下: ? 可以看到也走了我的自定义实现,两种方式大家都可以用哈。

31220

C#相等性 - 三个方法和一个接口

IEquatable System.Object的static bool Equals(object obj)这个方法,因为其参数是object类型,所以它可以对任何引用类型进行比较。...而IEquatable这个接口就可以解决这些问题。 它只定义了一个方法:bool Equals(T other)。 例子,三个int: ? 使用它的Equals()方法: ?...所有的原始类型都实现了IEquatable接口。int, byte... 而IEquatable对值类型非常有用。...但是对引用类型没有太大的用处,因为引用类型比较时不存在装箱问题,而且IEquatable在继承方面还是存在问题的,但是string还是实现了IEquatable接口,因为string是seal...需要注意的是如果实现了IEquatable,那么它的实现方法和重写的object.Equals()方法应该保持一致,做同样的事。

49320

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券