当前位置: 代码迷 >> 综合 >> 【C#】面向对象(8)——对象的隐式转换和显式转换
  详细解决方案

【C#】面向对象(8)——对象的隐式转换和显式转换

热度:53   发布时间:2023-10-01 20:56:38.0
Chinese ch= new  Chinese();
//隐式转换,把子类变量赋值给父类变量
Person p = ch;
//显式转换,把父类变量赋值给子类变量
Person p = new Chinese();
Chinese ch = (Chinese)p;
//如果对象不在同一个继承树路径上
//则不能强制类型转换
Dog g = new Dog();
Chinese ch = (Chinese)g;//错误
//is运算
if(p is Chinese)
{Console.WriteLine("中国人");
}
else if(p is Korean)
{Console.WriteLine("韩国人");
}
//as 运算符
Chinese ch = p as Chinese ;
if(ch!=null)
{Console.WriteLine("中国人");
}
Korean ch = p as Korean ;
if(ch!=null)
{Console.WriteLine("韩国人");
}

1、()转换和as 转换的区别:如果转换失败()会报异常,而as则会返回null。

2、if (p1 is Chinese)//is运算符结果就是bool,表示是否是指定的类型。is用来判断变量指向的对象是否是指定的类型或者指定类型子类类型。as可以起到判断类型和转换的双重作用。