“;对象作为类型“;以及“;(类型)对象)”;

本文关键字:对象 类型 以及 | 更新日期: 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项:更喜欢isas运算符而不是Casts

如果无法将对象强制转换为目标类型,则强制转换将引发异常。as将只返回null