类型转化
子类可以隐式转换父类
Student stu = new Student();
Person p = stu;//子类转换父类,直接隐式转换
p.Show();
Person p = new Teacher();
Student stu = (Student)p;//如果new的时候是子类,那么转换的时候转的另一个子类的时候报异常
stu.SayHello();
Person p = new Teacher();
Teacher t = (Teacher)p;//如果new的时候是子类,那么再转换这个子类的时候可以
t.SayHi();
Person p = new Person();
Student stu = (Student)p;//父类不能直接转换子类
stu.SayHello();
判断
is
Person p = new Student ();
bool result = p is Teacher;
if (result )
{
Teacher t = (Teacher)p;
t.SayHi();
}
else
{
Console.WriteLine("转换不了");
}
as Teacher t = new Teacher();
Person p = t as Person;
p.Show();
Person p = new Teacher();
Teacher t = p as Teacher;
t.SayHi();
Person p = new Student();
Teacher t = p as Teacher;
t.SayHi();
Teacher tea = new Person();
Teacher t = tea as Teacher;
t.SayHi();
//is可以做as可以做的事情,
//as 也是转换,但是 如果转换不了,不报异常,返回来时null
//is 转换,返回来的是bool值,true就是能转换,false是不能转换