C#中as跟is的用法

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#代码 
  1. object o = "abc";  
  2. if (o is string//执行第一次类型兼容性检查  
  3. {  
  4.     string s = (string)o; //执行第二次类型兼容性检查,并转换  
  5.     MessageBox.Show("转换成功!");  
  6. }  
  7. else  
  8. {  
  9.     MessageBox.Show("转换失败!");  
  10. }  


as转换规则: 

1.检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null; 
2.不会抛出异常; 
3.如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常; 

示例: 

C#代码 
  1. object o = "abc";  
  2. string s = o as string//执行第一次类型兼容性检查,并返回结果  
  3. if (s != null)   
  4.     MessageBox.Show("转换成功!");  
  5. else  
  6.     MessageBox.Show("转换失败!");  


注:as比is少执行一次兼容性检查,性能可能会高一点点