![]() |
1
4
这就是所谓的安全铸造。它尝试从一种类型转换为另一种类型,如果转换失败,它将返回
实际上有两个独立的IL指令来处理
第一个演员使用
请看 Casting vs using the 'as' keyword in the CLR 更详细的解释。 |
![]() |
2
3
这个 as keyword 是在C中投射物体的一种更安全的方法。
意味着如果
|
![]() |
3
0
as关键字的另一个优点是,如果类型不能强制转换,那么它将抛出编译时异常,其中as(cast)直到运行时才会中断。 |
![]() |
4
0
另外,重要的是要记住“as”在引用中运行,而不是在对象本身中。这就是为什么它可以返回空值而不是抛出异常的原因,因为对象将保持不变。这就是为什么你只能在引用类型上做。 通常情况下,这并不重要,但是如果您实现了一个强制转换函数(如 MSDN 它会 不 使用as运算符调用。 因此,as运算符对于“向上和向下移动继承层次结构”很有用:如果您有一个类人员,则可以执行以下操作: person p=new person(); ojbect o=p作为对象; P=O为人; 但是,在所有情况下,内存中的对象都不会以任何方式被修改,只是对它的引用。 希望有所帮助 |
![]() |
Trey · C-易失性指针的使用 7 年前 |
![]() |
Alex · 使用“*args”,关键字参数变为位置参数? 7 年前 |
![]() |
Thamme Gowda · “lambda”关键字的较短替代项? 7 年前 |
![]() |
ldenkewi · 如何在azure搜索中实际使用关键字分析器? 8 年前 |
![]() |
Ander Acosta · Admob不按关键字加载广告 9 年前 |
|
Jackie19 · OCaml中的“更小”关键字(?) 10 年前 |