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#にこれに似たものがあるかどうか疑問に思っています。(はい、明示的なインターフェイスを実行し、それに委任するだけの別の名前の別の'wrapper'メンバーを介してアクセスできることはわかっていますが、VB.NETでは、両方を1つのメソッドで実行します。)

それでそれはできますか?

マーク

4

2 に答える 2

7

いいえ、これはC#では不可能です。(VB.NETでも「インターフェイスを明示的に実装」することはできません。)

于 2011-04-04T01:08:43.617 に答える
1

明示的な実装 + その実装を呼び出すパブリック メソッドを使用することで、基本的に VB シナリオと見分けがつかない結果を達成できるという意味で「可能」です。

リフレクションを伴う場合を除けば、これは本当に同じことになります。

于 2011-04-04T03:50:06.703 に答える