这二者的区别,仅在一个类同时实现多个接口,且多个接口中有相同的方法名字定义时,才有比较的意义。
using System;
namespace InterfaceTest
{
class Program
{
static void Main(string[] args)
{
TestAB ab = new TestAB();
ab.HelloWorld(); //Hello World!
IB b = ab as IB;
b.HelloWorld(); //IB.HelloWorld!
IA a = ab as IA;
a.HelloWorld(); //IA.HelloWorld!
Console.Read();
}
}
//IA的接口定义
interface IA
{
void HelloWorld();
}
//IB的接口定义
interface IB
{
void HelloWorld();
}
class TestAB : IA, IB
{
//隐式实现IA与IB的HelloWorld方法
public void HelloWorld()
{
Console.WriteLine("Hello World!");
}
//显式实现IB接口的HelloWorld方法
void IB.HelloWorld()
{
Console.WriteLine("IB.HelloWorld!");
}
//显式实现IA接口的HelloWorld方法
void IA.HelloWorld()
{
Console.WriteLine("IA.HelloWorld!");
}
}
}
输出结果已经说明了问题,就不多做解释了。
结论:
1、对于显式实现的接口方法,在类实例上调用时,需要显式转换为指定的接口,然后才能正确调用。
2、如果类实例不显式转换接口,直接用"类实例.接口同名方法"调用,将调用隐式实现的方法.
3、显式实现的接口方法,不能加public之类的关键字修饰。
4、通常显式实现并非必需的步骤.(本例中,可以去掉IA或IB的显式实现部分,甚至这二个显式实现都可以去掉,然后再观察下输出结果)
共同学习,写下你的评论
评论加载中...
作者其他优质文章