写几个带继承关系的类,使用直接强转的方式,以及使用as转换, 并且练习is的类型判断

来源:互联网 发布:举牌照软件下载 编辑:程序博客网 时间:2024/06/05 18:24

接口IBaseA 、 IBaseB 和 IMyClass:

 interface IBaseA    {        void PrintBaseA();    }

interface IBaseB    {        void PrintBaseB();    }

 

 interface IMyClass    {        void PrintMyClass();    }



实现IBaseA 、 IBaseB 和 IMyClass接口,继承类:

class BaseA : IBaseA     {        public void PrintBaseA()        {            Console.WriteLine("This is PrintBaseA!");        }    }
 class BaseB : BaseA, IBaseB    {        public void PrintBaseB()        {            Console.WriteLine("This is PrintBaseB!");        }    }

 

 class MyClass : BaseB, IMyClass    {       public void PrintMyClass()        {            Console.WriteLine("This is PrintMyClass!");        }    }


Main

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace InterfaceIsAs{    //========================================================================    //  クラス名 : Program    /// <summary>    /// Program    /// </summary>    /// <remarks>    /// 查看带几个继承的类,使用强制转化的方式,    /// 以及使用as转换, 并且练习is的类型判断    /// </remarks>    //========================================================================    class InterfaceIsAs    {        //========================================================================        //  メソッド名 : Main        /// <summary>        /// Main        /// </summary>        /// <remarks>        /// 强制转化,查看其继承方式        /// </remarks>        //========================================================================        static void Main(string[] args)        {            BaseA a1 = new BaseA();            a1.PrintBaseA();            BaseA a2 = new BaseB();            a2.PrintBaseA();            BaseA a3 = new MyClass();            a3.PrintBaseA();            BaseB b1 = new BaseB();            b1.PrintBaseA();            b1.PrintBaseB();            BaseB b2 = new MyClass();            b2.PrintBaseA();            b2.PrintBaseB();            MyClass mc1 = new MyClass();            mc1.PrintBaseA();            mc1.PrintBaseB();            mc1.PrintMyClass();            //TestBaseA            TestBaseA(a1);            TestBaseA(a2);            TestBaseA(a3);            Console.WriteLine();            //TestBaseB            TestBaseB(b1);            TestBaseB(b2);            Console.WriteLine();            //TestMyClass            TestMyClass(mc1);            Console.WriteLine();            Console.ReadKey();        }        //========================================================================        //  メソッド名 : TestBaseA        /// <summary>        /// TestBaseA        /// </summary>        /// <param name="a">辅助变量</param>        //========================================================================        private static void TestBaseA(BaseA a)        {            /*             * is: 检查对象是否与给定类型兼容,返回类型为bool(True or False)             *              * as: 用于在兼容的引用类型之间之行转换。             */            if (a is IBaseA)             {                IBaseA baseA = a as IBaseA;                Console.WriteLine("baseA:{0}", baseA);            }            else            {                Console.WriteLine("Error!");            }        }        //========================================================================        //  メソッド名 : TestBaseB        /// <summary>        /// TestBaseB        /// </summary>        /// <param name="b">辅助变量</param>        //========================================================================        private static void TestBaseB(BaseB b)        {            if (b is IBaseB)            {                IBaseB baseB = b as IBaseB;                Console.WriteLine("baseB:{0}", baseB);            }            else            {                Console.WriteLine("Error!");            }        }        //========================================================================        //  メソッド名 : TestMyClass        /// <summary>        /// TestMyClass        /// </summary>        /// <param name="mc">辅助变量</param>        //========================================================================        private static void TestMyClass(MyClass mc)        {            if (mc is IMyClass)            {                IMyClass myClass = mc as IMyClass;                Console.WriteLine("myClass:{0}", myClass);            }            else            {                Console.WriteLine("Error!");            }        }    }}


 

原创粉丝点击