基本类型--接口(二、EIMI)
 14.4调用接口方法详解

14.5接口方法的隐式和显式调用

14.6泛型接口

14.7 泛型接口和接口约束

14.8实现具有多个方法名和签名的多个接口

14.9用显示接口方法实现改进编译时类型安全

 class Program
 class Program
 {
    {
 public static void Main() {
        public static void Main() {
 SomeValueType sv = new SomeValueType(5);
            SomeValueType sv = new SomeValueType(5);
 Object o1 = new object();
            Object o1 = new object();
 Int32 n = sv.CompareTo(sv);//装箱操作
            Int32 n = sv.CompareTo(sv);//装箱操作
 // n = sv.CompareTo(o1);//编译通过,出现运行时错误
            // n = sv.CompareTo(o1);//编译通过,出现运行时错误

 OtherValueType ov = new OtherValueType(5);
            OtherValueType ov = new OtherValueType(5);
 Object o2 = new object();
            Object o2 = new object();
 n = ov.CompareTo(ov);//没有进行装箱操作
            n = ov.CompareTo(ov);//没有进行装箱操作
 // n = ov.CompareTo(o2);//编译时错误
            // n = ov.CompareTo(o2);//编译时错误

 Console.WriteLine(n);
            Console.WriteLine(n);
 Console.ReadLine();
            Console.ReadLine();
 }
        }
 }
    }
 //未使用EIMI
    //未使用EIMI
 internal struct SomeValueType : IComparable {
    internal struct SomeValueType : IComparable {
 private Int32 m_x;
        private Int32 m_x;
 public SomeValueType(Int32 x) {
        public SomeValueType(Int32 x) {
 m_x = x;
            m_x = x;
 }
        }
 public Int32 CompareTo(Object other) {
        public Int32 CompareTo(Object other) {
 return (m_x - ((SomeValueType)other).m_x);
            return (m_x - ((SomeValueType)other).m_x);
 }
        }
 }
    }
 //使用EIMI
    //使用EIMI
 internal struct OtherValueType : IComparable {
    internal struct OtherValueType : IComparable {
 private Int32 m_x;
        private Int32 m_x;
 public OtherValueType(Int32 x){
        public OtherValueType(Int32 x){
 m_x = x;
            m_x = x;
 }
        }
 public Int32 CompareTo(OtherValueType other) {
        public Int32 CompareTo(OtherValueType other) {
 return (m_x - other.m_x);
            return (m_x - other.m_x);
 }
        }
 Int32 IComparable.CompareTo(Object other) {
        Int32 IComparable.CompareTo(Object other) {
 return CompareTo((OtherValueType)other);
            return CompareTo((OtherValueType)other);
 }
        }
 }
 14.10谨慎使用显示接口方法实现
    }
 14.10谨慎使用显示接口方法实现

 //
 //
 //internal class Base : IComparable {
    //internal class Base : IComparable {
 //    //显式接口方法
    //    //显式接口方法
 //    Int32 IComparable.CompareTo(Object o) {
    //    Int32 IComparable.CompareTo(Object o) {
 //        Console.WriteLine("Base.ComparaTo");
    //        Console.WriteLine("Base.ComparaTo");
 //        return 0;
    //        return 0;
 //    }
    //    }
 //}
    //}
 //internal class Derived : Base,IComparable {
    //internal class Derived : Base,IComparable {
 //    //接口实现的公共方法
    //    //接口实现的公共方法
 //    public Int32 CompareTo(Object o){
    //    public Int32 CompareTo(Object o){
 //        Console.WriteLine("Derived.ComparaTo");
    //        Console.WriteLine("Derived.ComparaTo");
 //        //调用基类的CompareTo会导致错误
    //        //调用基类的CompareTo会导致错误
 //        //base.CompareTo(o);
    //        //base.CompareTo(o);
 //        return 0;
    //        return 0;
 //    }
    //    }
 //}
    //}
 //正确定义Base和Derived
    //正确定义Base和Derived
 internal class Base : IComparable
    internal class Base : IComparable
 {
    {
 //显式接口方法
        //显式接口方法
 Int32 IComparable.CompareTo(Object o)
        Int32 IComparable.CompareTo(Object o)
 {
        {
 Console.WriteLine("Base's IComparable ComparaTo");
            Console.WriteLine("Base's IComparable ComparaTo");
 return 0;
            return 0;
 }
        }
 //基类的虚方法
        //基类的虚方法
 public virtual Int32 CompareTo(Object o)
        public virtual Int32 CompareTo(Object o)
 {
        {
 Console.WriteLine("Base's virtual ComparaTo");
            Console.WriteLine("Base's virtual ComparaTo");
 return 0;
            return 0;
 }
        }
 }
    }
 internal class Derived : Base, IComparable
    internal class Derived : Base, IComparable
 {
    {
 //也是接口实现的公共方法
        //也是接口实现的公共方法
 public override Int32 CompareTo(Object o)
        public override Int32 CompareTo(Object o)
 {
        {
 Console.WriteLine("Derived.ComparaTo");
            Console.WriteLine("Derived.ComparaTo");
 return base.CompareTo(o);
            return base.CompareTo(o);
 }
        }
 }
14.11设计:基类还是接口
    }
14.11设计:基类还是接口

 

14.5接口方法的隐式和显式调用

14.6泛型接口

14.7 泛型接口和接口约束

14.8实现具有多个方法名和签名的多个接口

14.9用显示接口方法实现改进编译时类型安全

 class Program
 class Program {
    { public static void Main() {
        public static void Main() { SomeValueType sv = new SomeValueType(5);
            SomeValueType sv = new SomeValueType(5); Object o1 = new object();
            Object o1 = new object(); Int32 n = sv.CompareTo(sv);//装箱操作
            Int32 n = sv.CompareTo(sv);//装箱操作 // n = sv.CompareTo(o1);//编译通过,出现运行时错误
            // n = sv.CompareTo(o1);//编译通过,出现运行时错误
 OtherValueType ov = new OtherValueType(5);
            OtherValueType ov = new OtherValueType(5); Object o2 = new object();
            Object o2 = new object(); n = ov.CompareTo(ov);//没有进行装箱操作
            n = ov.CompareTo(ov);//没有进行装箱操作 // n = ov.CompareTo(o2);//编译时错误
            // n = ov.CompareTo(o2);//编译时错误
 Console.WriteLine(n);
            Console.WriteLine(n); Console.ReadLine();
            Console.ReadLine(); }
        } }
    } //未使用EIMI
    //未使用EIMI internal struct SomeValueType : IComparable {
    internal struct SomeValueType : IComparable { private Int32 m_x;
        private Int32 m_x; public SomeValueType(Int32 x) {
        public SomeValueType(Int32 x) { m_x = x;
            m_x = x; }
        } public Int32 CompareTo(Object other) {
        public Int32 CompareTo(Object other) { return (m_x - ((SomeValueType)other).m_x);
            return (m_x - ((SomeValueType)other).m_x); }
        } }
    } //使用EIMI
    //使用EIMI internal struct OtherValueType : IComparable {
    internal struct OtherValueType : IComparable { private Int32 m_x;
        private Int32 m_x; public OtherValueType(Int32 x){
        public OtherValueType(Int32 x){ m_x = x;
            m_x = x; }
        } public Int32 CompareTo(OtherValueType other) {
        public Int32 CompareTo(OtherValueType other) { return (m_x - other.m_x);
            return (m_x - other.m_x); }
        } Int32 IComparable.CompareTo(Object other) {
        Int32 IComparable.CompareTo(Object other) { return CompareTo((OtherValueType)other);
            return CompareTo((OtherValueType)other); }
        } }
    }
 //
 // //internal class Base : IComparable {
    //internal class Base : IComparable { //    //显式接口方法
    //    //显式接口方法 //    Int32 IComparable.CompareTo(Object o) {
    //    Int32 IComparable.CompareTo(Object o) { //        Console.WriteLine("Base.ComparaTo");
    //        Console.WriteLine("Base.ComparaTo"); //        return 0;
    //        return 0; //    }
    //    } //}
    //} //internal class Derived : Base,IComparable {
    //internal class Derived : Base,IComparable { //    //接口实现的公共方法
    //    //接口实现的公共方法 //    public Int32 CompareTo(Object o){
    //    public Int32 CompareTo(Object o){ //        Console.WriteLine("Derived.ComparaTo");
    //        Console.WriteLine("Derived.ComparaTo"); //        //调用基类的CompareTo会导致错误
    //        //调用基类的CompareTo会导致错误 //        //base.CompareTo(o);
    //        //base.CompareTo(o); //        return 0;
    //        return 0; //    }
    //    } //}
    //} //正确定义Base和Derived
    //正确定义Base和Derived internal class Base : IComparable
    internal class Base : IComparable {
    { //显式接口方法
        //显式接口方法 Int32 IComparable.CompareTo(Object o)
        Int32 IComparable.CompareTo(Object o) {
        { Console.WriteLine("Base's IComparable ComparaTo");
            Console.WriteLine("Base's IComparable ComparaTo"); return 0;
            return 0; }
        } //基类的虚方法
        //基类的虚方法 public virtual Int32 CompareTo(Object o)
        public virtual Int32 CompareTo(Object o) {
        { Console.WriteLine("Base's virtual ComparaTo");
            Console.WriteLine("Base's virtual ComparaTo"); return 0;
            return 0; }
        } }
    } internal class Derived : Base, IComparable
    internal class Derived : Base, IComparable {
    { //也是接口实现的公共方法
        //也是接口实现的公共方法 public override Int32 CompareTo(Object o)
        public override Int32 CompareTo(Object o) {
        { Console.WriteLine("Derived.ComparaTo");
            Console.WriteLine("Derived.ComparaTo"); return base.CompareTo(o);
            return base.CompareTo(o); }
        } }
    }
- 
   
- DeepSought
- 探索AI融入千行百业与日常生活
 
                     
                    
                 
                    
                 
    
 
         
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号