[英]Why must I implement a function for an interface in vb.net which apparently doesn't need to be implemented in C#
[英]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.