Нет никакого смысла в любом вызове, потому что test
уже приведен к IBingo
.Вы можете написать:
if(obj is IBingo test)
{
TestMethod(test);
}
Вы используете форму сопоставления с шаблоном if
, что означает, что блок будет введен только , если obj
можно привести к IBingo
.Когда это произойдет, результат приведения будет сохранен в переменной test
.Эта переменная будет находиться в области видимости только внутри этого блока.
Этот код сопоставления с образцом эквивалентен:
var test = obj as IBingo;
if (test!=null)
{
TestMethod(test);
}
Обновление
Модифицированныйкод не нуждается в приведении, потому что Yankee
класс является реализацией IBingo
.
Если это не так, это будет зависеть от того, было ли явное или явное приведениеопределяется от Yankee
до IBingo
.Оператор as
будет работать в любом случае.