Ho notato che Resharper suggerisce di attivare questo:
if (myObj.myProp is MyType)
{
...
}
in questo:
var myObjRef = myObj.myProp as MyType;
if (myObjRef != null)
{
...
}
Perché suggerirebbe questo cambiamento? Sono abituato a Resharper suggerire modifiche all'ottimizzazione e modifiche alla riduzione del codice, ma sembra che voglia prendere la mia singola affermazione e trasformarla in una doppia riga.
Secondo MSDN :
Una è espressione risulta vera se entrambe le seguenti condizioni:
l'espressione non è nulla. è possibile eseguire il cast dell'espressione al tipo . Ovvero, un'espressione cast del modulo
(type)(expression)
verrà completata senza generare un'eccezione.
Lo sto interpretando erroneamente o non is
faccio gli stessi identici controlli, solo in una singola riga senza la necessità di creare esplicitamente un'altra variabile locale per il controllo nullo?
MyProp
getter dopo questo cambiamento.