gpt4 book ai didi

c# - VB.net 界面无法编译,为什么?

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:17 25 4
gpt4 key购买 nike

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

我让它在 C# 中工作,它应该在 VB.net 中工作没有问题,唯一的问题是托管类无法编译,我得到这个错误:
错误类“ManagedClass”必须为 ICalculator 接口(interface)实现“Function Add(Number1 As Integer, Number2 As Integer) As Integer”

为什么?我看到一个声明的函数和一个实现的函数,并且具有相同的参数...怎么了?

 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 中,您必须明确接口(interface)实现 - 这比 C# 更灵活(因为您可以随意命名您的函数),但工作量要多一些。

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

正如 M.A. Hanin 和我自己都提到的 - 它可以让你选择名字,但我们都没有提到你为什么要这样做。一个例子是,如果您正在实现两个定义相同方法名称的接口(interface)。并且您希望将这两种方法公开为类中的公共(public)方法。在 C# 中,您必须至少创建一个“包装器”函数来调用另一个来实现这一点。

关于c# - VB.net 界面无法编译,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2377749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com