C#里式转化应用

版权声明:本文为博主原创文章,欢迎转载,转载标明出处 https://blog.csdn.net/qq_43304572/article/details/83244824

里式转化:
1>子类可以赋值给父类;如果一个地方需要父类作为参数,可以找一个子类对象代替
2>如果父类中装的是子类对象,那么这个父类可以强转化成子类对象

       //Person p=new Student();
        //Student ss=(Student)p;
        //

        //is的用法:
        //if(p is Student)
        {
            //Student ss = (Student)p;
            //ss.StudentSayHello();
        }

        //as 的用法:
        //Student t=p as Student;
        //if (s != null)
        //{
                //t.StudentSayHello();
       // }

应用实例:
结果:
里式转化练习
代码如下:

           //子类均继承父类,所以可以创建一个父类数组,可以放所有子类的对象
            Person[] prs = new Person[10];
            //产生随机10个数,对于数字不同用不同的子类函数
            Random r = new Random();        
            for (int i = 0; i < prs.Length; i++)
			{
                int n = r.Next(1, 5);
                //next(MinValue,MaxValue);返回指定范围的随机数
			     switch (n)
                {
                    case 1: prs[i] = new Student();//子类对象赋值给父类
                        break;
                    case 2: prs[i] = new Teacher();
                        break;
                    case 3: prs[i] = new Meinv();
                        break;
                    case 4: prs[i] = new Person();
                        break;
                }
			}
            //prs中存放10个对象(子类,父类)
            for (int i = 0; i < prs.Length; i++)
            {
                if (prs[i] is Meinv)//第二点,父类中有子类的对象
                {
                    Meinv mn = (Meinv)prs[i];
                    mn.MeinvSayHi();
                }
                else if (prs[i] is Student)
                {
                    Student s = (Student)prs[i];
                    s.StudentSayHi();
                }
                else if (prs[i] is Teacher)
                {
                    Teacher t = (Teacher)prs[i];
                    t.TearcherSayHi();
                }
                else
                {
                    prs[i].PersonSayHi();
                }
            }
            Console.ReadKey();
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_43304572/article/details/83244824
今日推荐