Проверьте следующий код:
private void Foo(object bar)
{
Type type = bar.GetType();
if (type != null) // Expression is always true
{
}
}
Решарпер утверждает, что type
никогда не будет null
. Это очевидно для меня, потому что всегда будет тип для bar
, но как Решарпер узнает об этом? Как он может знать, что результат метода никогда не будет null
.
Type
не является структурой, поэтому это не может быть. И если бы метод был написан мной, то возвращаемое значение, безусловно, могло бы быть null
(не обязательно GetType, но что-то еще).
Достаточно ли умен Резарпер, чтобы знать, что только для этого конкретного метода результат никогда не будет null
? (Как и в жестко закодированном списке известных методов .Net, которые никогда не вернут ноль)