Ste*_*ger 1 c# vb.net interface com-interop
问题:我正在尝试将此转换为:http: //support.microsoft.com/kb/828736 到VB.net
我让它在C#中工作,它应该在VB.net中没有问题,唯一的问题是托管类不会编译,我得到这个错误:
错误类"ManagedClass"必须实现"函数添加(Number1 As整数,Number2为整数)为整数"为ICalculator-Interface
为什么?我看到一个函数已声明,一个已实现,并且具有相同的参数......出了什么问题?
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
Run Code Online (Sandbox Code Playgroud)
在VB.Net中,你必须明确你的接口实现 - 这允许比C#更灵活(因为你可以随意命名你的函数),但是更多的工作.
Public Function Add(ByVal Number1 As Integer, ByVal Number2 As Integer) As Integer Implements ICalculator.Add
Return Number1 + Number2
End Function
Run Code Online (Sandbox Code Playgroud)
正如MA Hanin和我自己提到的那样 - 它可以让你选择名字,但我们都没有提到你为什么要这样做.一个例子是,如果您实现两个定义相同方法名称的接口.并且您希望将这两种方法作为类的公共方法公开.在C#中,您必须创建至少一个"包装器"函数,该函数调用另一个来完成此操作.
| 归档时间: |
|
| 查看次数: |
308 次 |
| 最近记录: |