Como o Resharper sabe "Expressão é sempre verdadeira"?
Confira o seguinte código:
private void Foo(object bar)
{
Type type = bar.GetType();
if (type != null) // Expression is always true
{
}
}
Reivindicações de compartilhador de novotype
nunca seránull
. Isso é óbvio para mim, porque sempre haverá um tipo parabar
, mas como o Resharper sabe disso? Como pode saber que o resultado de um método nunca seránull
.
Type
não é uma estrutura, então não pode ser isso. E se o método foi escrito por mim, o valor de retorno certamente poderia sernull
(não necessariamente GetType, mas outra coisa).
O Resharper é inteligente o suficiente para saber que, somente para esse método específico, o resultado nunca seránull
? (Como se houvesse uma lista codificada de métodos .Net conhecidos que nunca retornarão nulos)