Оператор is
по существу определяет, возможно ли приведение, но вместо того, чтобы генерировать исключение, когда приведение невозможно, возвращается false
. Если вы подумаете о том, чтобы применить отражение, то это тоже отражение.
EDIT:
После некоторых исследований я обнаружил, что приведение выполняется в IL по инструкции castclass
, в то время как оператор is
отображается на инструкцию isinst
. FxCop имеет правило , которое предупреждает вас, если вы делаете ненужные приведения, сначала используя isinst
, а затем инструкцию castclass
. Несмотря на то, что операции эффективны, они все равно имеют затраты на производительность.