类型转换时编程中很常见的操作:
经常出现类型转换不成功,并且会抛出异常
1 is运算符:
定义使用格式: 表达式 is 目标类型
适用范围:
1 引用转换 ----------------引用类型之间转换
2 装箱转换 ----------------- 值类型到引用类型之间转换
3 拆箱转换 -------------------引用类型到值类型之间转换
举例:一下代码用is运算法来检测Bob类型是否能转换成Person类
class Person //定义Person类
{
public string name="乖蛋";
}
class Bob:Person{} //Bob继承自Person类
//主程序 【引用类型之间转换】
class Program
{
static void Main()
{
Bob b=new Bob(); //实例化Bob
Person p; //声明Person引用
if( b is p) //尝试转换 此处可以看到is运算符在类型转换,如果成功则为true,否则为false
{
p=b; //如果成功则p=b
Console.WriteLine("p 中的name是:{0}", p.name)
}
}
}
2 as 运算符
定义格式: 表达式 as 目标类型
使用范围:
1 引用转换 ----------------引用类型之间转换
2 装箱转换 ----------------- 值类型到引用类型之间转换
举例:
class Person //定义Person类
{
public string name="乖蛋";
}
class Bob:Person{} //Bob继承自Person类
//主程序 【as转换】
class Program
{
static void Main()
{
Bob b=new Bob(); //实例化Bob
Person p; //声明Person引用
p =b as Person //定义的格式
if( p!=null ) //尝试转换 此处可以看到as运算符在类型转换,如果成功则为源类型引用,否则为null
{
Console.WriteLine("p 中的name是:{0}", p.name)
}
}
}