首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于接口属性的IComparer

基于接口属性的IComparer
EN

Stack Overflow用户
提问于 2012-02-21 17:27:35
回答 2查看 1.1K关注 0票数 0

我创建了一个类Car,该类派生自抽象类TransportMeans,并实现了一个仅包含一个属性的接口PrivateMeans

代码语言:javascript
复制
interface PrivateMean 
{
int capacity { set; get; }
}

我希望实现一个类,并根据属性容量对类Car的对象进行排序。我想通过使用接口IComparer来做到这一点。

但是,当我声明一个附加的类CarComparer时,如下所示:

代码语言:javascript
复制
public class CarComparer : IComparer<Car>
{

    int IComparer<Car>.Comparer(Car obj1, Car obj2)
    {
        PrivateMean t1 = (PrivateMean)obj1;
        PrivateMean t2 = (PrivateMean)obj2;


        if (t1 != null && t2 != null)
        {
            if (t1.capacity >= t2.capacity)
                return 1;
            else return -1;
        }
        else
            throw new ArgumentException("Some Parameter is not a Car!");
    }
}

我收到错误:

错误1 'MeansOfTransport.CarComparer‘不实现接口成员MeansOfTransport.CarComparer MeansOfTransport.Car).

有什么问题吗?

此外,没有类型定义(Car),我不允许使用IComparer。为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-21 17:31:29

你有

代码语言:javascript
复制
int IComparer<Car>.Comparer(Car obj1, Car obj2)

你可能是说

代码语言:javascript
复制
int IComparer<Car>.Compare(Car obj1, Car obj2)
票数 2
EN

Stack Overflow用户

发布于 2012-02-21 17:34:49

可能出现的问题:

您需要实现一个Comparer

  • The方法的
  • ,但是您正在实现的
  • 方法是public,所以您的方法也应该是public。目前,您的方法没有访问修饰符,因此默认为internal.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9382169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档