2010-03-04 119 views
1

問:我嘗試在這裏轉換這樣的: http://support.microsoft.com/kb/828736 到VB.netVB.net界面不會編譯,爲什麼?

我得到了它在C#中的工作,應該沒有問題VB.net工作,唯一的問題是管理類將不能編譯,我得到這個錯誤:
錯誤級「ManagedClass」必須實現「添加功能(數字1爲整數,NUMBER2作爲整數)作爲整數」爲ICalculator接口

爲什麼?我看到一個函數被聲明,一個被實現,並且具有相同的參數......有什麼不對?

Imports System 
Imports System.Collections.Generic 
Imports System.Text 

Namespace TestLibrary2 
' Interface declaration. 
Public Interface ICalculator 
    Function Add(ByVal Number1 As Integer, ByVal Number2 As Integer) As Integer 
End Interface 



' Interface implementation. 
Public Class ManagedClass 
    Implements ICalculator 
    Public Function Add(ByVal Number1 As Integer, ByVal Number2 As Integer) As Integer 
     Return Number1 + Number2 
    End Function 
End Class 


End Namespace 
+0

已添加Implements ICalculator.Add和IT WORKS! – 2010-03-04 08:52:56

回答

5

在VB.Net,你必須明確你的接口實現 - 這使得比C#更多的靈活性(因爲你能說出你的功能不管你喜歡),但有一點更多的工作。

由於兩個文學碩士HANIN和我所提到的 - 它可以讓你選擇的名字,但我們倆都沒有提到爲什麼你可能想這樣做。例如,如果您正在實現兩個定義相同方法名稱的接口。並且你想把這些方法都公開爲你的類的公共方法。在C#中,你必須創建至少一個調用另一個的「包裝器」函數來實現這一點。

+0

實現ICalculator.Add。呃...謝謝! – 2010-03-04 08:31:53

2

你只需要告訴它,具有完全相同名稱和定義的函數的類實際上就是你想要處理的接口函數。

Public Function Add(ByVal Number1 As Integer, ByVal Number2 As Integer) As Integer Implements ICalculator.Add 
     Return Number1 + Number2 
    End Function