Загадка с оператором «is». Часть 1

 

Возможно, что в программе с некоторой локальной переменной x:

bool b = x is FooBar;

во время исполнения присваивается b значение true, даже если преобразование типов (явное или неявное) переменной x к FooBar запрещено компилятором! Т.е. выражение:

FooBar foobar = (FooBar)x;

в той же самой программе не будет компилироваться.

Можете ли вы придумать подобный пример? Это не слишком сложная загадка, но она показывает некоторые тонкие моменты оператора «is», которые мы рассмотрим в следующий раз.