【发布时间】:2011-07-01 08:51:25
【问题描述】:
查看以下代码:
private void Foo(object bar)
{
Type type = bar.GetType();
if (type != null) // Expression is always true
{
}
}
ReSharper 声称 type 永远不会是 null。这对我来说很明显,因为bar 总是有一个类型,但是 ReSharper 是怎么知道的呢?它怎么知道方法的结果永远不会是null?
Type 不是结构,所以不可能是这样。而且如果方法是我写的,那么返回值肯定是null(不一定是GetType,而是别的)。
ReSharper 是否足够聪明地知道,仅对于该特定方法,结果永远不会是 null? (就像有一个硬编码的已知 .NET 方法列表,它们永远不会返回 null。)
【问题讨论】: