interface の明示的な実装の例
- (こんにちは、 Diosan です)
- 明示的なインターフェイスの実装( C# プログラミング ガイド) (Microsoft)
まぁ、なぜ 2 種類あるかはガイドの方を見てもらうとして。
この機能を(私が)よく利用するのは、やはり interface で規定されるメソッドの返却値を実装クラスで替える(明示する)様な場合ですね。
典型的な例が ICloneable.Clone() の実装のケース。
class SomeClass : ICloneable { #region 明示的な実装 object ICloneable.Clone() { return this.Clone(); } #endregion #region 実装クラスで同名のメソッドを作成 // ICloneable.Clone() の返却値の型は汎用型 (object) なので // 自クラスのインスタンスを返す public SomeClass Clone() { SomeClass obj = new SomeClass(); // ディープコピーロジックを実装 .. return obj; } #rendregion
こうしないと呼び出し側でいちいちキャストしなきゃいけなくなるので、重宝しています。
……ちなみに、「プロパティやメソッドなどの同じ名前を持つ別々のメンバを 2 つのインターフェイスがそれぞれ宣言するケースを解決する場合」とかは遭遇した事がないです。