当前位置 : 主页 > 网络编程 > 其它编程 >

基本类型接口(二、EIMI)

来源:互联网 收集:自由互联 发布时间:2023-07-02
144调用接口方法详解145接口方法的隐式和显式调用146泛型接口147泛型接口和接口约束148实现 144调用接口方法详解 145接口方法的隐式和显式调用 146泛型接口 147 泛型接口和接口约束 148实
144调用接口方法详解145接口方法的隐式和显式调用146泛型接口147泛型接口和接口约束148实现 144调用接口方法详解145接口方法的隐式和显式调用 146泛型接口147 泛型接口和接口约束 148实现具有多个方法名和签名的多个接口149用显示接口方法实现改进编译时类型安全 class Program    {        public static void Main() {            SomeValueType sv  new SomeValueType(5);            Object o1  new object();            Int32 n  sv.CompareTo(sv);//装箱操作            // n  sv.CompareTo(o1);//编译通过出现运行时错误            OtherValueType ov  new OtherValueType(5);            Object o2  new object();            n  ov.CompareTo(ov);//没有进行装箱操作            // n  ov.CompareTo(o2);//编译时错误            Console.WriteLine(n);            Console.ReadLine();        }    }    //未使用EIMI    internal struct SomeValueType : IComparable {        private Int32 m_x;        public SomeValueType(Int32 x) {            m_x  x;        }        public Int32 CompareTo(Object other) {            return (m_x - ((SomeValueType)other).m_x);        }    }    //使用EIMI    internal struct OtherValueType : IComparable {        private Int32 m_x;        public OtherValueType(Int32 x){            m_x  x;        }        public Int32 CompareTo(OtherValueType other) {            return (m_x - other.m_x);        }        Int32 IComparable.CompareTo(Object other) {            return CompareTo((OtherValueType)other);        }    }  1410谨慎使用显示接口方法实现 //    //internal class Base : IComparable {    //    //显式接口方法    //    Int32 IComparable.CompareTo(Object o) {    //        Console.WriteLine("Base.ComparaTo");    //        return 0;    //    }    //}    //internal class Derived : Base,IComparable {    //    //接口实现的公共方法    //    public Int32 CompareTo(Object o){    //        Console.WriteLine("Derived.ComparaTo");    //        //调用基类的CompareTo会导致错误    //        //base.CompareTo(o);    //        return 0;    //    }    //}    //正确定义Base和Derived    internal class Base : IComparable    {        //显式接口方法        Int32 IComparable.CompareTo(Object o)        {            Console.WriteLine("Bases IComparable ComparaTo");            return 0;        }        //基类的虚方法        public virtual Int32 CompareTo(Object o)        {            Console.WriteLine("Bases virtual ComparaTo");            return 0;        }    }    internal class Derived : Base, IComparable    {        //也是接口实现的公共方法        public override Int32 CompareTo(Object o)        {            Console.WriteLine("Derived.ComparaTo");            return base.CompareTo(o);        }    } 1411设计基类还是接口
上一篇:c++基础_回文数
下一篇:没有了
网友评论