繁体   English   中英

VB.net接口无法编译,为什么?

[英]VB.net interface won't compile, why?

问题:我正在尝试将其转换为: http : //support.microsoft.com/kb/828736到VB.net

我让它在C#中工作,并且在VB.net中应该没有问题,唯一的问题是托管类无法编译,我得到了这个错误:
错误类“ ManagedClass”必须为ICalculator-Interface实现“函数Add(将Number1作为整数,将Number2作为整数)作为整数”

为什么? 我看到声明了一个函数,并实现了一个函数,并且具有相同的参数……这是怎么回事?

 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

在VB.Net中,您必须明确说明您的接口实现-与C#相比,它提供了更大的灵活性(因为您可以随意命名函数),但是要花更多的功夫。

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

正如马·哈宁(MA Hanin)和我自己都提到过的-它使您可以选择名称,但是我们俩人都没有提到您为什么要这样做。 一个示例是,如果要实现两个都定义相同方法名的接口。 您想将这两种方法都公开为类的公共方法。 在C#中,您必须创建至少一个“包装器”函数,并调用另一个函数来实现此目的。

您只需要告诉它具有完全相同名称和定义的函数的类就是您要处理接口函数的类。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM