`
sjk2013
  • 浏览: 2180191 次
文章分类
社区版块
存档分类
最新评论

C#中的AS、IS运算符与强制类型转换

 
阅读更多

as和强制转换之间最大的区别就在于如何处理用户自定义的转换。操作符 as和 is 都只检查被转换对象的运行时类型,并不执行其他的操作。如果被转换对象的运行时类型既不是所转换的目标类型,也不是其派生类型,那么转型将告失败。但是强制转型则会使用转换操作符来执行转型操作,这包括任何内建的数值转换(如:long转int)。

  一般情况我们应该先考虑使用as进行类型转换,然后再考虑使用is,最后才考虑使用强制转换。
如果你使用as来转换数据,那么用is来做检测是不必要的。只用检测返回类型是否为null就行了
is和as一样,都是类型转换安全的,它们在任何时候都不会在转换时发生异常,因此可以先用is来安全的判断一下数据类型。与as不同的时,is只是做类型检测并返回逻辑值,不做转换。

as不能用于值类型,这是因为值类型不能为null。像这种情况我们应该使用强制类型转换。
eg:在代码中

double i = 12;
int j = i as int;
Error 1 The as operator must be used with a reference type or nullable type ('int' is a non-nullable value type) 


<wbr></wbr>

分享到:
评论

相关推荐

    C#中常用的运算符总结

    在C#中常用到的运算符有条件运算符,is运算符,as运算符,typeof 运算符等等,接下来在文章中将为大家具体介绍各个运算符的使用方法 条件运算符 条件运算符用( ?: )来表示 condition ? X:Y 上述的语句表示的是如果...

    c# 使用模式匹配以及 is 和 as 运算符安全地进行强制转换

    C# 还提供 is 和 as 运算符来测试值是否属于特定类型。 下面的示例演示如何使用模式匹配 is 语句: class Animal { public void Eat() { Console.WriteLine("Eating."); } public override string ToString() {...

    C#基础语法:as 运算符使用实例

    as 运算符类似于强制转换操作。但是,如果无法进行转换,则 as 返回 null 而非引发异常。 as 运算符只执行引用转换和装箱转换。as 运算符无法执行其他转换,如用户定义的转换,这类转换应使用强制转换表达式来执行。...

    微软C#语言规范,C#语言教程中文版

    7.7.6 强制转换表达式 183 7.8 算术运算符 184 7.8.1 乘法运算符 184 7.8.2 除法运算符 185 7.8.3 余数运算符 186 7.8.4 加法运算符 187 7.8.5 减法运算符 189 7.9 移位运算符 190 7.10 关系和类型测试运算符 192 ...

    C#语言规范(2.0,3.0,4.0合集)

    7.7.6 强制转换表达式 183 7.8 算术运算符 184 7.8.1 乘法运算符 184 7.8.2 除法运算符 185 7.8.3 余数运算符 186 7.8.4 加法运算符 187 7.8.5 减法运算符 189 7.9 移位运算符 190 7.10 关系和类型测试运算符 192 ...

    C#教程(语言规范)

    7.7.6 强制转换表达式... 164 7.8 算术运算符 ... 164 7.8.1 乘法运算符... 165 7.8.2 除法运算符... 165 7.8.3 余数运算符... 166 7.8.4 加法运算符... 167 7.8.5 减法运算符... 169 7.9 移位运算符 ... 170...

    C#语言规范(4.0版本)

    Microsoft(微软)C#语言规范4.0版本,非常值得大家学习收藏! 目录 1. 简介 1 1.1 Hello world 1 1.2 程序结构 2 1.3 类型和变量 3 1.4 表达式 6 1.5 语句 8 1.6 类和对象 12 1.6.1 成员 12 1.6.2 可访问性 13 1.6.3 ...

    .net中 关于反射的详细介绍

    •运行时类型标识,能预先测试某个强制类型转换操作,能否成功,从而避免无效的强制类型转换异常。 •在c#中有三个支持RTTI的关键字:is 、 as 、typeof。 下面依次介绍他们 is运算符:通过is运算符,能够判断对象...

    C# 使用方法 入门教程

    5.1.4 is运算符..... 123 5.1.5 as运算符..... 123 5.1.6 sizeof运算符..... 123 5.1.7 typeof运算符..... 124 5.1.8 可空类型和运算符..... 124 5.1.9 空接合运算符..... 124 5.1.10 运算符的优先级..... 125 5.2 ...

    C#_语言规范_4.0_中文版

    7.7.6 强制转换表达式 183 7.8 算术运算符 184 7.8.1 乘法运算符 184 7.8.2 除法运算符 185 7.8.3 余数运算符 186 7.8.4 加法运算符 187 7.8.5 减法运算符 189 7.9 移位运算符 190 7.10 关系和类型测试运算符 192 ...

    C#语言规范4.0

    7.7.6 强制转换表达式 183 7.8 算术运算符 184 7.8.1 乘法运算符 184 7.8.2 除法运算符 185 7.8.3 余数运算符 186 7.8.4 加法运算符 187 7.8.5 减法运算符 189 7.9 移位运算符 190 7.10 关系和类型测试运算符 192 ...

    C#全能速查宝典

    1.1.2 as操作符——引用类型转换 3 1.1.3 base关键字——从派生类中访问基类的成员 3 1.1.4 变量——存储特定类型的数据 4 1.1.5 Console类——控制台中的输入流、输出流和错误流 6 1.1.6 Convert类——类型转换 8 ...

Global site tag (gtag.js) - Google Analytics