且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-08-15 15:03:52

        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)