Я понимаю, что использование оператора as
для приведения объекта поверх явного приведения обычно более желательно из-за того, что в случае сбоя приведения ссылочная переменная обнуляется, а не вызывает исключение.
Однако, допустим, я проверил, чтобы увидеть тип класса объекта, который находится внутри списка, перед использованием оператора as
, например,
DrawableGameComponent drawComponent;
foreach (component in Components)
{
if (component is DrawableGameComponent)
{
drawComponent = component as DrawableGameComponent;
// do something with drawComponent
}
}
теряет ли использование оператора as
свои преимущества, сначала проверяя оператор is
? Таким образом, выполнение следующего приведения так же хорошо, потому что мы сначала проверяем тип класса, используя is
, прежде чем пытаться выполнить приведение?
if (component is DrawableGameComponent)
{
((DrawableGameComponent)componet).Visible = true;
}
Мне просто интересно, есть ли какая-то основная деталь, которую я пропускаю, или это действительно сводится к вопросу вкуса, какой шаблон использовать. Создает ли последний шаблон мусор через явное приведение?
Заранее спасибо!