A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hongiqnglik 中级黑马   /  2013-8-11 01:46  /  903 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

C#语言如何实现多重继承的特性?

1 个回复

倒序浏览
本帖最后由 许庭洲 于 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指派父接口类型,这种指派在运行时不会带来额外的开销。
   
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马