2015-05-19 13 views
5

tôi nhận được lỗi: Class 'QueryParameterComparer' must implement 'Function Compare(x As QueryParameter, y As QueryParameter) As Integer' for interface 'System.Collections.Generic.IComparer(Of QueryParameter)'.Lỗi mà tôi phải thực hiện một chức năng trong một lớp học mặc dù hàm được định nghĩa

On định nghĩa lớp này:

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 

Tôi cũng đã cố gắng viết nó ra đầy đủ:

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 

Tôi đang thiếu gì?

+3

Triển khai phương thức giao diện yêu cầu từ khóa * Implements *. Chỉ cần để cho IDE giúp bạn rơi vào hố thành công. Xóa hàm, đặt con trỏ sau dòng yadayada Thực hiện và nhấn phím Enter. –

+1

Woah! Tôi chưa bao giờ thấy điều đó xảy ra trước đây! Tôi chỉ đánh dấu điều này là một bản sao và sau đó tôi nhận ra rằng bạn là người đã hỏi câu hỏi trùng lặp nhiều năm trước đây. Hài hước ... –

+0

@StevenDoggart: LOL! : S Một số người không bao giờ học? :) Không thể xóa bài đăng này nữa ... – Flo

Trả lời

8

Không giống như trong C#, nơi tên của phương pháp này chỉ có để phù hợp với một trong giao diện, trong VB.NET, mọi cài đặt giao diện luôn luôn phải được quy định rõ ràng với Implements từ khóa trên mỗi thành viên:

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 
3

VB.Net yêu cầu bạn chỉ định phương thức nào là các phương thức thực hiện của giao diện của bạn.

Public Function Compare(x As QueryParameter, y As QueryParameter) As Integer Implements System.Collections.Generic.IComparer(Of QueryParameter).Compare 

Thật lạ lùng, nhưng nó cho phép bạn chỉ định tên hàm khác để triển khai. Điều này làm cho nó để truy cập trực tiếp đến lớp của bạn có thể có một tên cho hàm, nhưng một tham chiếu thông qua giao diện sẽ có tên phương thức giao diện. Một cái gì đó khác bạn có thể làm là chỉ định phương thức riêng tư để bạn chỉ có thể truy cập phương thức thông qua tham chiếu giao diện.

Các vấn đề liên quan