2010-10-22 74 views
0

我有我从Java转换的C#代码。在此,我得到的错误“未实现inteface成员System.Collections.IComparer.Comparer(对象,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; 
     } 

感谢。

+0

C#is case sens itive - 将'compare'更改为'Compare'。 – RPM1984 2010-10-22 04:37:59

回答

2

的IComparer有一个方法:

int Compare(
    object x, 
    object y 
); 

它看起来像你需要大写C对 “比较”

+0

谢谢...错误消失了。 – user437890 2010-10-22 04:50:38

0

您需要更改线路

public virtual int compare(object o1, object o2) 

public virtual int Compare(object o1, object o2) 

C#是c ASE敏感...

+0

非常感谢。现在错误消失了 – user437890 2010-10-22 04:50:10

0

我几乎同样的问题,但我的解决办法是向公众修饰符添加到我创建的方法:

问题:

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); 
    } 
} 

在这两种情况下,我和你的,我想这只是一个注意问题...