首页 > 编程 > C# > 正文

消除C#中接口的二义性

2023-05-02 19:48:26
字体:
来源:转载
供稿:网友

在本站中的另外两篇文章里比较详细的介绍了接口的含义及定义和实现方法,本文中重点介绍由于接口的多继承而导致的二义性问题。

另外两篇文章的连接:

(1)C#中的接口

(2)C#中接口的使用方法

在C#中不支持多重继承的一个重要原因就是命名冲突问题,命名冲突会导致二义性。C#虽然不支持类的多重继承,但支持接口的多重继承,这同样会导致二义性的产生。下面的例子将演示二义性的产生的原因及消除二义性的一个办法:

using System;
interface Donkey
{
   void Run();
}
interface Horse
{
    void Run();
}
class Mule:Donkey,Horse
{
    void Donkey.Run()
    {
       Console.WriteLine("小驴劲儿真大阿");
    }
    void Horse.Run()
   {
        Console.WriteLine("马奔跑能力真强!");
   }
}
class Test
{
   static void Main()
   {
      Mule m = new Mule();
     ((Donkey)m).Run();
     ((Horse)m).Run();
    }
}

运行结果如下:

消除接口的二义性

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表