接口的多继承会带来哪些问题?

匿名网友 匿名网友 发布于: 2015-08-30 00:00:00
阅读 105 收藏 0 点赞 0 评论 0

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

评论列表
文章目录