C#中的接口
4、实现专门的接口方法(2)
如果EditBox中的Pait方法为公有并且同时提供了IControl.Paint方法,程序将是如何运行的呢?代码如下:
using System ;
interface IControl
{
void Paint();
}
public class EditBox: IControl
{
public void Paint()
{
Console.WriteLine("Pain method is called!");
}
void IControl.Paint()
{
Console.WriteLine("IControl.Pain method is called!");
}
}
class Test
{
static void Main()
{
EditBox editbox = new EditBox();
editbox.Paint();
((IControl)editbox).Paint();
}
}
程序执行结果如下:
Pain method is called! IControl.Pain method is called!
程序执行时内存布局如下:

可见,EditBox中公有的Paint方法并不是接口实现方法,真正的接口实现方法是IControl.Paint,这将导致editbox.Paint()方法与((IControl)editbox).Paint()的执行结果并不一样。
5、结论
接口方法的实现通常是通过类中的公有方法实现的;
在一些特殊情况下(代码隐藏、一个类实现的两个接口具有相同的接口方法等),需要专门实现某个接口的方法。