父类与子类的转换as,is
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 子类与父类的相互转换 { class Program { static void Main(string[] args) { //try catch finally 与 continue //如果在try中遇到continue,则忽略try中continue之后的语句 //但是依然执行finally中语句 //finally之外的语句也不执行 bool _flag = true; while(true) { try { //if(_flag) // continue; //如果_falg为true,这下面的两句不执行 //Person per = new Student(); //per.Say();//此时输出father //类的转换:as is //1. is:返回bool类型,指示是否可以做这个转换 //2. as:如果转换成功,则返回对象,否则返回null //作用:我们可以将所有的子类当做是父类来看,针对父类进行编程 // 可以写出通用代码,从而适应需求的不断改变 Person per = new Student(); Student stu1 = per as Student; if(stu1 != null) { stu1.Say(); } Teacher tea1 = per as Teacher; if(tea1 == null) { Console.WriteLine("转换失败"); } } catch (Exception ex) { throw ex; } finally { //如果try中执行了continue,则这两句依然要执行 Console.WriteLine("finally"); Console.ReadKey(); } //如果在try中执行continue,则下面的两条语句并不执行 Console.WriteLine(); Console.ReadKey(); } } } class Person { public void Say() { Console.WriteLine("father"); } } class Teacher:Person { public new void Say() { Console.WriteLine("Teacher"); } } class Student:Person { public new void Say() { Console.WriteLine("Student"); } } }