除了和之间的常规无聊差异Cast
之外As
- 如果我知道苹果是水果,所以我可以使用
(Fruit)apple
- 如果它不是,它会引发异常 as value
可以检查 null 以查看是否成功[不会抛出异常...]
但是我一直在阅读@EricLippert关于此的文章,并且有一个关于 Nullable Value Types 的很好的示例:
short? s = (short?)123;
int? i = s as int?;
这不会编译...
无法转换类型“短?” 到'int?通过引用转换、装箱转换、拆箱转换、包装转换或空类型转换
美好的。
那么为什么这样:
short? s = (short?)123;
int? i = (int?)s;
是否编译?(出乎所有人的意料!我知道那s
不是 int?
- 它应该会爆炸,但它不是......)
这里的 Cast 检查应该比前一个例子(它去 Bang)更致命
问起这个话题,我感觉很糟糕。
提前致谢。