【发布时间】:2013-12-19 16:37:48
【问题描述】:
这两个if语句会产生不同结果的情况吗?
if(x as X != null)
{
// Do something
}
if(x is X)
{
// Do something
}
编辑:澄清一下:我知道运算符(一般而言)和它们的含义有什么区别。问题是这两种情况是否会产生不同的结果。
【问题讨论】:
-
如果
X是不可为空的结构,x as X不起作用。 -
抛开问题,使用 x 是 X,第一个只是愚蠢并创建额外的转换
-
@TimSchmelter
is如果左侧是null,则返回 false。在这方面它们是相同的。 -
@CodesInChaos:我已经认出了它。 Here's 相关问题。感谢您指出了这一点。抱歉删除了我的评论,我后来才注意到你的评论。
-
@O.R. Mapper 用 if(x != null && x is X) 不是更好吗,这个对我来说更具可读性
标签: c# .net operators type-conversion comparison-operators