本帖最后由 许庭洲 于 2013-8-11 06:36 编辑
1. C#中类继承只允许单继承,但是接口继承允许多继承,一个子接口可以有多个父接口;
2. 在多继承中,如果两个父类接口含有同名的成员,就产生了二义性,这时需要进行显示的声明。
3. 举例子:
using System;
interface ISequence
{
int Count{get;set;}
}
interface IRing
{
void Count(int i);
}
interface IRingSequence:ISequence,IRing{}
class C
{
void Test(IRingSequence rs){
//rs.Count(1); 错误, Count有二义性
//rs.Count=1; 错误,Count有二义性
((ISequence)rs).Count=1; //正确
((IRing)rs).Count(1); //正确调用IRing.Count
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//上面的例子中,前两条语句x.Count(1)和x.Count =1会产生二义性,从而导致编译时错误,因此必须显示地给X指派父接口类型,这种指派在运行时不会带来额外的开销。
|