在下面的代码中使用Cast和AS运算符之间的区别?
可能重复:
直接投射vs'as'运营商?
任何人都可以告诉代码片段之间的实际区别吗?
var unknown = (object)new List<string>();
// Snippet 1: as operator
foreach (var item in unknown as IList<int>) {
// Do something with item
}
// Snippet 2: cast operator
foreach (var item in (IList<int>)unknown) {
// Do something with item
}
因为操作符不会引发错误,但是InvalidCastException
会引发InvalidCastException
错误
来自MSDN
as运算符就像一个强制转换,除了在转换失败时产生空值而不是引发异常。
expression as type
相当于:
expression is type ? (type)expression : (type)null
除了表达式只评估一次。
请注意,as运算符仅执行参考转换和装箱转换。 as运算符不能执行其他转换,例如用户定义的转换,而应该使用转换表达式来执行转换。
使用as运算符不同于C#中的强制转换有三个重要方面:
当您尝试转换的变量不是所请求的类型或它的继承链时,它将返回null,而不是抛出异常。
它只能应用于转换为引用类型的引用类型变量。
参考博客
链接地址: http://www.djcxy.com/p/73745.html上一篇: Difference between using Cast and AS operator in following code?
下一篇: When to use the "as" keyword and when to use () casting?