编译器在IComparable(Of T)对象中没有看到CompareTo方法

时间:2013-11-26 16:29:15

标签: vb.net icomparable

我正在尝试通过在VB.NET中为类实现IComparable接口来将Implementing generic IComparer in VB的答案应用于我的项目。该答案中GenericComparer的部分编译得很好,但是我的特定对象上的IComparable接口不会通过编译器。

Public Class RowAndRanking
    Implements IComparable(Of RowAndRanking)

    Public html As String
    Public rank As Double

    Public Function CompareTo(other As RowAndRanking) As Integer
        Return Math.Round(Me.rank - other.rank)
    End Function
End Class

编译器一直坚持认为“Class'RowAndRanking'必须为'System.IComparable(Of RowAndRanking)'接口实现'Function CompareTo(其他As RowAndRanking)As Integer'。”,但看着我的代码,我可以看到方法签名。此外,如果我去我试图在这些对象的列表上运行排序的地方,我可以输入:

Dim row as RowAndRanking = new RowAndRanking
row.CompareTo(...

Visual Studio的代码完成后会选择方法签名。

我尝试过清理和重建项目,但问题仍然存在。我已经尝试将其更改为使用非泛型比较器解决方案,但编译器仍然没有看到CompareTo方法。这应该很简单,但编译器只是看不到该函数。这有发生在其他人身上吗?还有其他我可以试试的吗?

1 个答案:

答案 0 :(得分:3)

与C#不同,VB要求您明确mark implementing methods

添加

Implements IComparable(Of RowAndRanking).CompareTo