Я заметил, что Resharper предлагает мне это сделать:
if (myObj.myProp is MyType)
{
...
}
в это:
var myObjRef = myObj.myProp as MyType;
if (myObjRef != null)
{
...
}
Почему он предложил это изменение? Я привык к Resharper, предлагая изменения в оптимизации и изменения кода, но похоже, что он хочет взять мой единственный оператор и превратить его в двухстрочный.
Согласно MSDN:
выражение оценивается как true, если оба следующих условия: выполняются:
выражение не равно нулю. выражение может быть применено к типу. Это литое выражение формы
(type)(expression)
будет завершено без выбрасывая исключение.
Я неправильно понимаю это или не выполняет те же проверки is
только в одной строке без необходимости явно создавать другую локальную переменную для нулевой проверки?