c#基础概念之接口多继续带来的问题
C# 中的接口与类不同,可以使用多继承,即一个子接口可以有多个父接口。但如果两个父成员具有同名的成员,就产生了二义性(这也正是 C# 中类取消了多继承的原因之一),这时在实现时最好使用显式的声明
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example17
{ class Program
{ //一个完整的接口声明示例
interface IExample
{ //属性
string P
{ get;
set;
}
//方法
string F(int Value);
//事件
event EventHandler E;
//索引指示器
string this[int Index]
{ get;
set;
}
}
interface IA
{ int Count { get; set;} }
interface IB
{ int Count();
}
//IC接口从IA和IB多重继承
interface IC : IA, IB
{ }
class C : IC
{ private int count = 100;
//显式声明实现IA接口中的Count属性
int IA.Count
{ get { return 100; } set { count = value; } }
//显式声明实现IB接口中的Count方法
int IB.Count()
{ return count * count;
}
}
static void Main(string[] args)
{ C tmpObj = new C();
//调用时也要显式转换
Console.WriteLine("Count property: {0}", ((IA)tmpObj).Count); Console.WriteLine("Count function: {0}", ((IB)tmpObj).Count());
Console.ReadLine();
}
}
}
结果:
Count property: 100
Count function: 10000