複数のinterfaceにはまったく同じ署名方法がある場合がありますが、C#はJavaよりも合理的に処理されているようです.


詳細
Interface A:

package snippet;

public interface IAPaint {
	public void paint();
}

Interface B:

package snippet;

public interface IBPaint {
	public void paint();
}


これで実現できます.

package snippet;

public class ABImpl implements IAPaint, IBPaint {

	public void paint() {
		System.out.println("Paint");
	}

	public static void main(String[] args) {
		IAPaint implA = new ABImpl();
		implA.paint();

		IBPaint implB = new ABImpl();
		implB.paint();
	}
}


実装後,AとBインタフェースは同じメソッド体を共有する.
ほほほ、c#はこのようにすることができます:

public class SampleClass : IControl, ISurface
{
    void IControl.Paint()
    {
        System.Console.WriteLine("IControl.Paint");
    }
    void ISurface.Paint()
    {
        System.Console.WriteLine("ISurface.Paint");
    }
}