is转换规则:
1. 检查对象类型的兼容性,并返回结果true(false);
2. 不会抛出异常;
3. 如果对象为null,刚返回false;
比如:
object obj = "1234";
if (obj is string) //执行第一次类型兼容性检查
{ string s = (string)obj; //执行第二次类型兼容性检查,并转换
MessageBox.Show("转换成功!");
}else {
MessageBox.Show("转换失败!");
}
as转换规则:
1.检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null;
2.不会抛出异常;
3.如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常;
object obj = "123";
string str = obj as string; //执行第一次类型兼容性检查,并返回结果
if (str != null)
MessageBox.Show("转换成功!");
else
MessageBox.Show("转换失败!");
注:as比is少执行一次兼容性检查,性能可能会高一点点。 |