区别:(对象)o == null和(((object)o)== null

时间:2014-03-06 10:17:43

标签: c# casting

我试图检查null的参数,我在脑海中找到了一个问题: 有什么区别:

if ( (object) o == null ) ...

if ( ((object) o) == null ) ...

编辑:变量o可以是任何引用类型(没有重载==运算符)。

2 个答案:

答案 0 :(得分:2)

  if ((object) o) == null) ...

是个错误。也许你想写

  if (((object) o) == null) ...

所以你将o投射到Object然后测试它是否等于null

除了在if (((object) o) == null) ...中使用()

明确表达(人性化)之外,这是相同的事情。

所有这些符号都可以完成相同的测试。

答案 1 :(得分:-2)

两者都是一样的。

在第一种情况下 - 在施法前进行比较。首先,它将与null进行比较然后转换为Object。

在第二种情况下 - 在比较之前进行铸造。首先,它会将o转换为Object,然后将其与null进行比较。