第一:你需要引入 System.Generics.Defaults 单元,系统默认实现的比较方法,都在该单元定义。
第二:你要明确下你的需求,是只比较相等就可以,还是要比较大小。
- IEqualityComparer<T> 是用来比较两个值是否相等的接口
- IComparer<T> 是用来比较两个值大小的接口
第三:确定是否要自己实现比较函数还是使用默认的比较函数,如果使用默认的比较函数:
- IEqualityComparer<T> 的值取 TEqualityComparer<T>.Default
- IComparer<T> 的值取 TEqualityComparer<T>.Default
如果要实现自己的比较函数,则可以使用预置的封装加一个匿名函数实现:
- IEqualityComparer<T> 的值取 TEqualityComparer<T>.Construct(…)
- IComparer<T> 的值取 TEqualityComparer<T>.Construct(…)
执行实现比较时,使用对应的 IComparer<T>.Compare 或 IEqualityComparer<T>.Equals 来比较。