0.2.比较接口Default

abstract class EqualityComparer:IEqualityComparer,IEqualityComparer

0
static volatitle EqualityComparer<T> defaultComparer;
public static EqualityComparer<T> Default{get;} //调用CreateComparer()

//Default属性就返回了8种comparer
private static EqualityComparer<T> CreateComparer()
{
    //根据不同情况返回8种默认实现的comparer        
}
## 其他的额外方法
IndexOf()
LastIndexOf()

1.GenericEqualityComparer
2.NullableEqualityComparer
3.ObjectEqualityComparer
4.ByteEqualityComparer
5.EnumEqualityComparer
6.SByteEnumEqualityComparer
7.ShortEnumEqualityComparer
8.LongEnumEqualityComparer

abstract class Comparer:IComparer,IComparer

0
public static Comparer<T> Default{get;} //使用CreateComparer()

CreateComparer产生4个不同的派生类,根据泛型

1. ComparisonComparer<T>
2. GenericComparer<T>
3. NullableComparer<T>
4. ObjectComparer<T>
0

常见的3类比较接口

1.IComparable,IComparable 我有比较的能力,我和其他instance比

int CompareTo(T other);

2.IComparer,IComparer 我是个比较器,所以我能比较任何两个instance

int Compare(T x,T y);

3.IEqualityComparer,IEqualityComparer 强调改变了equals也要改变gethashcode

bool Equals(T x,T y);
int GetHashCode(T obj);

IEquatable 强调是否相等

bool Equals(T other); 
两个对象是否相等

IStructuralEquatable

Boolean Equals(Object other,IEqualityComparer comparer);
int GetHashCode(IQualityComparer comparer);

IStructuralComparable

Int32 CompareTo(Object other, IComparer comparer);

转载于:https://www.cnblogs.com/zhangrCsharp/p/7695217.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值