as和强制转换的区别

as和强制转换之间最大的区别就在于如何处理用户自定义的转换。操作符 as和 is 都只检查被转换对象的运行时类型,并不执行其他的操作。如果被转换对象的运行时类型既不是所转换的目标类型,也不是其派生类型,那么转型将告失败。但是强制转型则会使用转换操作符来执行转型操作,这包括任何内建的数值转换(如:long转int)。
一般情况我们应该先考虑使用as进行类型转换,然后再考虑使用is,最后才考虑使用强制转换。
as是用来类型转换的,例如两个类:A和B ;B b = new B();
不用as,进行强制转换,如果类型不匹配,会引发转换异常A a = (A) b;
使用as,类型不匹配,不会引发异常,会返回一个null,此时 a = null ;A a = b as A;

你可能感兴趣的:(C#)