即使定义了函数,我也必须在类中实现一个函数

Flo*_*Flo 5 vb.net interface class interface-implementation

我收到错误: Class 'QueryParameterComparer' must implement 'Function Compare(x As QueryParameter, y As QueryParameter) As Integer' for interface 'System.Collections.Generic.IComparer(Of QueryParameter)'.

在这个类定义上:

    Protected Class QueryParameterComparer
        Implements IComparer(Of QueryParameter)

        Public Function Compare(x As QueryParameter, y As QueryParameter) As Integer
            If x.Name = y.Name Then
                Return String.Compare(x.Value, y.Value)
            Else
                Return String.Compare(x.Name, y.Name)
            End If
        End Function

    End Class
Run Code Online (Sandbox Code Playgroud)

我也尝试过完全写出来:

    Protected Class QueryParameterComparer
        Implements System.Collections.Generic.IComparer(Of QueryParameter)

        Public Function Compare(x As QueryParameter, y As QueryParameter) As Integer
            If x.Name = y.Name Then
                Return String.Compare(x.Value, y.Value)
            Else
                Return String.Compare(x.Name, y.Name)
            End If
        End Function

    End Class
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Ste*_*art 9

与c#不同,其中方法的名称必须与接口中的名称相匹配,在VB.NET中,必须始终使用Implements每个成员上的关键字明确声明所有接口实现:

Protected Class QueryParameterComparer
    Implements IComparer(Of QueryParameter)

    Public Function Compare(x As QueryParameter, y As QueryParameter) As Integer Implements IComparer(Of QueryParameter).Compare
        ' ...
    End Function
End Class
Run Code Online (Sandbox Code Playgroud)