“;对象作为类型“;以及“;(类型)对象)”;
本文关键字:对象 类型 以及 | 更新日期: 2023-09-27 18:08:17
可能重复:
直接铸造与';作为';操作员
铸造与使用';作为';CLR 中的关键字
object myObject = "Hello world.";
var myString = myObject as string;
object myObject = "Hello world.";
var myString = (string)myObject;
我看到类型转换是双向的。有什么区别?
"as"会将结果设置为null
。
如果显式强制转换失败,它将引发异常。
var myString = myObject as string;
它只检查myobject
的运行时类型。如果它的string
,那么它只转换为string
,否则只返回null
。
var myString = (string)myObject;
此还从源类型查找implicit
到字符串的转换。如果运行时类型既不是string
,也没有implicit
转换,那么它将抛出异常。
阅读Bill Wagner的Effective C#中的第3项:更喜欢is
或as
运算符而不是Casts。
如果无法将对象强制转换为目标类型,则强制转换将引发异常。as
将只返回null
。