13

好的,这是我要问的一个问题,不是在展示良好的编码实践(这实际上可能被认为是一种不好的做法),而是关于“可以”它是否可以完成。

也就是说,在 VB.NET 中,您实现了这样的接口......

Sub SomeInterfaceMember()
    Implements ISomeInterface.SomeInterfaceMember
End Sub

而在 C# 中,您可以像这样明确地执行此操作(只能通过接口调用)...

void ISomeInterface.SomeInterfaceMember(){}

或者更简单地说,隐含地像这样(在这种情况下,您可以直接调用它,或者通过接口调用它)......

void SomeInterfaceMember(){} // <-- This name matches the interface member

但是,关于 VB,您也可以使用您想要的任何成员名称来执行此操作...

Sub SomeRandomMemberName() // <-- This name doesn't match the interface member
    Implements ISomeInterface.SomeInterfaceMember
End Sub

换句话说,处理实现的方法可以具有与接口的成员名称完全不同的名称。

我只是想知道 C# 中是否有类似的东西。(是的,我知道我可以简单地做一个显式接口,然后通过另一个具有不同名称的“包装器”成员访问它,该名称只是委托给它,但在 VB.NET 中,您可以使用一个方法来完成这两个操作。)

那么可以做到吗?

标记

4

2 回答 2

7

不,这在 C# 中是不可能的。(你也不能在 VB.NET 中“显式地实现一个接口”。)

于 2011-04-04T01:08:43.617 回答
1

从某种意义上说,它“可以”通过使用显式实现+调用该实现的公共方法来实现与 VB 场景基本无法区分的结果。

除了涉及反射的情况外,这实际上最终会是同一件事。

于 2011-04-04T03:50:06.703 回答