C#中as跟is的用法
C#中as和is的用法一、类型转换?1.任何类型都可以转换为其基类类型,用隐式转换完成;?2.任何类型转换为其派生
C#中as和is的用法
一、类型转换?
1.任何类型都可以转换为其基类类型,用隐式转换完成;?
2.任何类型转换为其派生类型时,必须进行显示转换。如:(类型名)对象名;?
3.使用GetType可以取得任何对象的精确类型;?
4.基本类型可以使用Convert类实现类型转换;?
5.除了string以外的其他类型都有Parse方法,用于将字符串类型转换成对应的基本类型;?
6.值类型和引用类型的转换称为装箱(boxing)或拆箱(unboxing);?
二、is/as示例?
is转换规则:?
1. 检查对象类型的兼容性,并返回结果true(false);?
2.不会抛出异常;?
3.如果对象为null,刚返回false;?
示例:?
C#代码?
- object?o?=?"abc";??
- if?(o?is?string)?//执行第一次类型兼容性检查??
- {??
- ????string?s?=?(string)o;?//执行第二次类型兼容性检查,并转换??
- ????MessageBox.Show("转换成功!");??
- }??
- else??
- {??
- ????MessageBox.Show("转换失败!");??
- }??
as转换规则:?
1.检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null;?
2.不会抛出异常;?
3.如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常;?
示例:?
C#代码?
- object?o?=?"abc";??
- string?s?=?o?as?string;?//执行第一次类型兼容性检查,并返回结果??
- if?(s?!=?null)???
- ????MessageBox.Show("转换成功!");??
- else??
- ????MessageBox.Show("转换失败!");??
注:as比is少执行一次兼容性检查,性能可能会高一点点