显示转换:父类对象转换为子类类型必须使用强制转换
Person p = new Teacher();
Teacher t = (Teacher)p; //如果new的时候是new的是子类,那么在转换这个子类的时候可以
t.SayHi();
Person p = new Teacher();
Student stu = (Student)p; //如果new的是子类,转换的时候,转的另一个子类,报异常
stu.SayHello();
Console.ReadKey();
Person p = new Person();
Student stu = (Student)p;//父类对象不能直接转换子类
stu.SayHello();
隐式转换:子类对象转换为父类类型可以直接转
Student stu = new Student();
Person p = stu;
p.Show();
Console.ReadKey();
is转换:返回的是bool值,true为能转换,false不能转换
//关键字is判断能否转换
Person p = new Student();
bool result = p is Teacher;
if (result )
{
Teacher t =(Teacher )p;
t.SayHi();
}
else
{
Console.WriteLine("转换不了");
}
Console.ReadKey();
as转换:直接转换,写代码的时候不会报异常
//关键字as转换
Teacher t = new Teacher();//子类转换为父类
Person p = t as Person;
p.PerShow();
Person p = new Teacher();//父类转换为子类
Teacher t = p as Teacher;
t.TeaShow();