明示的なインターフェイスの実装 (C# プログラミング ガイド)Explicit Interface Implementation (C# Programming Guide)

シグネチャが同じメンバーが含まれる 2 つのインターフェイスをあるクラスが実装する場合、そのクラスでそのメンバーを実装することで、実装としてそのメンバーが両方のインターフェイスで使用されます。If a class implements two interfaces that contain a member with the same signature, then implementing that member on the class will cause both interfaces to use that member as their implementation. 次の例では、Paint のすべての呼び出しで同じメソッドが呼び出されます。In the following example, all the calls to Paint invoke the same method.

ただし、2 つのインターフェイス メンバーが同じ関数を実行しない場合、一方または両方のインターフェイスが間違って実装される可能性があります。If the two interface members do not perform the same function, however, this can lead to an incorrect implementation of one or both of the interfaces. インターフェイス メンバーは明示的に実装できます。そのインターフェイス経由でのみ呼び出され、そのインターフェイスに固有となるクラス メンバーが作成されます。It is possible to implement an interface member explicitly—creating a class member that is only called through the interface, and is specific to that interface. この実装は、インターフェイスの名前とピリオドを利用してクラス メンバーに名前を付けることで行われます。This is accomplished by naming the class member with the name of the interface and a period. 次に例を示します。For example:

クラス メンバー IControl.PaintIControl インターフェイス経由でのみ利用できます。ISurface.PaintISurface 経由でのみ利用できます。The class member IControl.Paint is only available through the IControl interface, and ISurface.Paint is only available through ISurface. いずれのメソッド実装も個別であり、クラスで直接利用できません。Both method implementations are separate, and neither is available directly on the class. 次に例を示します。For example:

2 つのインターフェイスで、それぞれが同じ名前の別のメンバー (プロパティやメソッドなど) を宣言するような場合の解決には、明示的な実装も利用されます。Explicit implementation is also used to resolve cases where two interfaces each declare different members of the same name such as a property and a method:

両方のインターフェイスを実装するには、コンパイラ エラーを回避するために、クラスはプロパティ P、メソッド P、または両方に明示的な実装を利用する必要があります。To implement both interfaces, a class has to use explicit implementation either for the property P, or the method P, or both, to avoid a compiler error. 次に例を示します。For example:

関連項目See also