在C#中,是否可以使用具有不同名称的成员实现接口成员,就像在VB.NET中一样?

Mar*_*eIV 13 c# vb.net interface interface-implementation

好吧,这是一个我要问的问题,而不是在展示良好的编码实践(这实际上可能被认为是一种不好的做法),而是在"可以"的问题上完成.

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

Sub SomeInterfaceMember()
    Implements ISomeInterface.SomeInterfaceMember
End Sub
Run Code Online (Sandbox Code Playgroud)

而在C#中你明确地这样做(只能通过界面调用)......

void ISomeInterface.SomeInterfaceMember(){}
Run Code Online (Sandbox Code Playgroud)

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

void SomeInterfaceMember(){} // <-- This name matches the interface member
Run Code Online (Sandbox Code Playgroud)

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

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

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

我只是想知道在C#中是否有类似的东西.(是的,我知道我可以简单地做一个显式接口,然后通过另一个'wrapper'成员使用一个简单的委托给它的不同名称来访问它,但是在VB.NET中,你只需要一个方法.)

那可以做到吗?

标记

Meh*_*dad 7

不,这在C#中是不可能的.(你不能在VB.NET中"显式实现接口".)

  • @MattDavey:无论如何,我都不会感到强烈......为什么这是一个"血腥的好事"? (4认同)
  • @MattDavey:行`void myInterface.foo()`相当于`Private Sub SomeRandomJunkA28GWE02()实现myInterface.foo`.名称`myInterface`和`foo`很重要,但在某些Reflection场景之外,名称`SomeRandomJunkA28GWE02`基本上无关紧要. (2认同)