![](/img/trans.png)
[英]Why does getting a member expression member name differ between C# and VB.NET?
[英]In C#, is it possible to implement an interface member using a member with a different name, like you can do in VB.NET?
好吧,这是一个我要问的问题,而不是在展示良好的编码实践(这实际上可能被认为是一种不好的做法),而是在“可以”的问题上完成。
也就是说,在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#中是否有类似的东西。 (是的,我知道我可以简单地做一个显式接口,然后通过另一个'wrapper'成员使用一个简单的委托给它的不同名称来访问它,但是在VB.NET中,你只需要一个方法。)
那可以做到吗?
标记
不,这在C#中是不可能的。 (你不能在VB.NET中“显式实现接口”。)
它可以通过使用显式实现+调用该实现的公共方法来实现与VB场景基本无法区分的结果。
除了涉及反思的案例,这真的最终会成为同样的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.