Не реализует ошибку интерфейса - PullRequest
0 голосов
/ 22 октября 2010

У меня есть код C #, который я конвертировал из Java. В этом я получаю сообщение об ошибке "не реализует элемент интерфейса System.Collections.IComparer.Comparer (object, obkject)"

Пожалуйста, помогите мне решить эту ошибку

internal class CompositeComparator : IComparer
{
    private IComparer major;
    private IComparer minor;
    public CompositeComparator(IComparer major, IComparer minor)
    {
        this.major = major;
        this.minor = minor;
    }
    public virtual int compare(object o1, object o2)
    {
        int result = major.Compare(o1, o2);
        if (result != 0)
        {
            return result;
        }
        else
        {
            return minor.Compare(o1, o2);
        }
    }
}

internal class ComparatorIStep : IComparer
{
    public ComparatorIStep()
    {
    }
    public virtual int compare(object o1, object o2)
    {
        int nReturn = ((LogMessage)o1).IStep - ((LogMessage)o2).IStep;
        return nReturn;
    }
}

internal class ComparatorType : IComparer
{
    public ComparatorType()
    {
    }
    public virtual int compare(object o1, object o2)
    {
        int nReturn = 0;

        LogMessage lm1 = (LogMessage)o1;
        LogMessage lm2 = (LogMessage)o2;
        bool b1 = lm1.isHeading;
        bool b2 = lm2.isHeading;
        if (b1 || !b2)
        {
            nReturn = -1;
        }
        else if (!b1 || b2)
        {
            nReturn = 1;
        }

Спасибо.

Ответы [ 3 ]

2 голосов
/ 22 октября 2010

У IComparer есть один метод:

int Compare(
   object x,
   object y
);

Похоже, вам нужно использовать заглавную букву "c" для сравнения

0 голосов
/ 04 апреля 2012

У меня была почти такая же проблема, но я решил добавить модификатор public к методу, который я создал:

Проблема:

public class Ordenacao : IComparer<tab>
{
    int Compare(tab x, tab y)
    {
        tab a = (tab) x;
        tab b = (tab) y;
        return a.ordinal.CompareTo(b.ordinal);
    }
}

Решение:

public class Ordenacao : IComparer<tab>
{
    public int Compare(tab x, tab y)
    {
        tab a = (tab) x;
        tab b = (tab) y;
        return a.ordinal.CompareTo(b.ordinal);
    }
}

В обоих случаях, мой и ваш, я думаю, это был просто вопрос внимания ...

0 голосов
/ 22 октября 2010

Вам нужно изменить строку

public virtual int compare(object o1, object o2)

на

public virtual int Compare(object o1, object o2)

C # с учетом регистра ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...