C# as与is的用法

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

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

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

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

猜你喜欢

转载自www.cnblogs.com/ljdong7/p/12117923.html
今日推荐