[教程]Delphi 泛型中数据内容比较

第一:你需要引入 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 来比较。

分享到: