【发布时间】:2011-03-25 15:02:08
【问题描述】:
Resharper 在这里为 as cast 提供了一个可能的空引用警告。它是否有任何实际发生的可能性,或者 if 语句中的 is 检查是否排除了它?
IMyObjectType someObject = null; //MyObjectType implements IMyObjectType
if (someObject is MyObjectType)
{
(someObject as MyObjectType).SomePropery = true;
}
【问题讨论】:
-
顺便说一句,在我的机器上没有显示警告。 Resharper 版本 5.1.3。将
someObject作为类字段。 -
@Snowbear JIM 编译器很奇怪。我正在运行 5.1.3000.12(与 5.1.3 相同?)。我想知道我的实际代码和这个例子有什么不同?
-
@Dan,是的,我也有
5.1.3000.12。不知道是什么原因。您当前的代码仅给出expression is always false警告,但即使我会忽略它,我也不会再收到任何警告。 -
@Snowbear JIM-compiler 我是 pebkac。我正在检查 someObject,然后投射 someObject2,两者都是 IMyObjectType。其他约束要求 someObject 和 someObject2 始终为同一类型(MyObjectType、MyObjectType2 等);但是没有明显的方法让 resharper 能够弄清楚这一点。
-
至少意识到实际问题会很容易关闭resharper。