2010-03-04 100 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