转换
1.任何类型都可以转换为其基类类型,用隐式转换完成;
2.任何类型转换为其派生类型时,必须进行显示转换。采用
(类型名)对象名
完成;
3.基本类型可以使用Convert类实现类型转换;
4.除了string以外的其他类型都有Parse方法,用于将字符串类型转换成对应的基本类型;
在系统中:
- 使用GetType可以取得任何对象的精确类型;
- 值类型和引用类型的转换称为装箱(boxing)或拆箱(unboxing);
C# 的is和as
is
is 关键字用于检查对象是否与给定类型兼容。注意了,这里的
is并不是“是”的意思,而是“兼容”。
也就是说,如果被检查对象能够强制转换成给定类型并不发生异常,那么表示它们类型兼容。
is 检查规则:
1.检查对象类型的兼容性,并返回结果true(false);
2.不会抛出异常;
3.如果对象为null,返回false;
示例:
object o = "string";
if (o is string) //执行第一次类型兼容性检查
{
string s = (string)o; //执行第二次类型兼容性检查,并转换
Console.WriteLine("success!");
}
else
{
Console.WriteLine("转换失败!");
}
注意:is运算符只考虑引用转换、装箱转换和 拆箱转换。不考虑其他转换,如用户定义的转换。
特别注意:虽然int和long、double是类型兼容的,但是使用is运算符的结果却是false,那是因为is运算符只考虑引用转换、装箱转换和拆箱转换。
在is运算符的左侧不允许使用匿名方法。
as 转换
as 转换规则
1.检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null;作为对比,如果类型不兼容,则强制转换会抛出异常。
2.不会抛出异常;