重複の可能性あり:
C#: インターフェース - 暗黙的および明示的な実装
これら 2 つの違いとその使用方法を説明してくれる人はいますか。私の知る限り、2.0 より前のクラスの多くはジェネリック型なしで実装されていたため、後者のバージョンでは両方の種類のインターフェースが実装されています。これらを使用する必要があるのは、このケースだけでしょうか?
使い方についても詳しく説明していただけますか?
ありがとう
ベストアンサー1
これについては、非常に詳しく書かれた良いブログ記事があります。
基本的に、暗黙的なインターフェース実装では、インターフェースのメソッドとプロパティに、クラスの一部であるかのようにアクセスします。明示的なインターフェース実装では、そのインターフェースとして扱う場合にのみアクセスできます。
どちらを使用するかという点では、インターフェイスと同じシグネチャを持つプロパティ/メソッドがある場合、または同じシグネチャを持つ 2 つのインターフェイスを実装し、一致するプロパティ/メソッドに対して異なる実装を持つ必要がある場合、明示的なインターフェイス実装を使用する必要があることがあります。
以下のルールはブラッド・エイブラムスによるものですデザインガイドラインブログ。
- しないでください明示的なメンバーをセキュリティ境界として使用します。これらは、インターフェイスにインスタンスをキャストするすべてのクライアントから呼び出すことができます。
- する実装の詳細を隠すために明示的なメンバーを使用する
- する明示的なメンバーを使用して、プライベート インターフェイスの実装を近似します。
- するサブクラスがオーバーライドできる明示的に実装されたメンバーにアクセスするための代替方法を公開します。競合が発生しない限り、同じメソッド名を使用します。
Brad のブログのコメントには、値型で明示的な実装を使用する場合はボックス化が関係するため、パフォーマンス コストに注意する必要があるとも記載されています。