首页 > 解决方案 > IComparer 未实现接口成员 - 错误 CS0738

问题描述

我正在尝试使用以下代码通过它们的一个属性(.Transaction.topLeftX,一个整数)对两个对象进行排序,以创建一个要在 Sort 方法中使用的比较器:

public class RespComp : IComparer<Kairos.Net.RecognizeImage>
{     
        public Kairos.Net.RecognizeImage Compare(Kairos.Net.RecognizeImage x, Kairos.Net.RecognizeImage y)
        {
            if (x.Transaction.topLeftX.CompareTo(y.Transaction.topLeftX) <= 0) return x;
               else return y;                      
        }
}

但是,我收到错误消息错误 CS0738 'RecogniseFacesKairos.RespComp' 没有实现接口成员 'IComparer.Compare(RecognizeImage, RecognizeImage)'。“RecogniseFacesKairos.RespComp.Compare(RecognizeImage, RecognizeImage)”无法实现“IComparer.Compare(RecognizeImage, RecognizeImage)”,因为它没有匹配的返回类型“int”。

Sort 方法中使用的比较器是否需要返回类型为 int?

标签: c#icomparer

解决方案


IComparer<T>接口应该实现一个返回int比较的方法。-1小于、0等于和1大于。

查看您的代码,如果您只是比较左上角,您可能只需执行以下操作:

public int Compare(FooImage x, FooImage y) {
    return x.Transaction.topLeftX.CompareTo(y.Transaction.topLeftX);
}

推荐阅读