Zauważyłem, że Resharper sugeruje, żebym włączył to:
if (myObj.myProp is MyType)
{
...
}
zaangażowany w to:
var myObjRef = myObj.myProp as MyType;
if (myObjRef != null)
{
...
}
Dlaczego miałby sugerować tę zmianę? Jestem przyzwyczajony do sugerowania przez Resharpera zmian optymalizacyjnych i zmian w zakresie redukcji kodu, ale wydaje mi się, że chce wziąć moje pojedyncze oświadczenie i przekształcić je w dwuwierszową.
Według MSDN :
To wyrażenie ma wartość true, jeśli spełnione są oba następujące warunki:
wyrażenie nie jest puste. wyrażenie można rzutować na typ . Oznacza to, że rzutowane wyrażenie formularza
(type)(expression)
zakończy się bez zgłaszania wyjątku.
Czy źle to czytam, czy też nie is
robię dokładnie tych samych kontroli, tylko w jednym wierszu, bez potrzeby jawnego tworzenia kolejnej zmiennej lokalnej do sprawdzenia wartości null?
MyProp
gettera po tej zmianie.