„is” versus try cast z zerowym sprawdzeniem

Zauważyłem, że Resharper sugeruje, że to odwrócę:

if (myObj.myProp is MyType)
{
   ...
}

zaangażowany w to:

var myObjRef = myObj.myProp as MyType;
if (myObjRef != null)
{
   ...
}

Dlaczego sugerowałoby to zmianę? Przyzwyczaiłem się do Resharpera sugerującego zmiany optymalizacyjne i zmiany redukcji kodu, ale wydaje mi się, że chce on przyjąć moje pojedyncze stwierdzenie i przekształcić je w dwuliniowy.

WedługMSDN:

Najest wyrażenie ma wartość true, jeśli spełnione są oba następujące warunki:

wyrażenie nie jest null. wyrażenie może być rzutowane narodzaj. To znaczy oddany wyraz formy(type)(expression) zakończy się bez rzucania wyjątku.

Czy źle to rozumiem, czy nieis wykonać dokładnie te same kontrole, tylko w jednej linii bez potrzeby jawnego tworzenia innej zmiennej lokalnej dla sprawdzenia zerowego?

questionAnswers(7)

yourAnswerToTheQuestion