Ключевое слово 'is' полезно для определения того, может ли объект быть преобразован в тип посредством преобразования по ссылке, в бокс или распаковку (C # lang spec 7.9.10). Он похож на «как» за исключением того, что он на самом деле не выполняет преобразование, просто возвращает, если это возможно.
Это полезно в любом сценарии, когда полезно знать, можно ли преобразовать объект в тип, но не нужно иметь объект через ссылку на этот тип.
if ( o is SomeType ) {
TakeSomeAction();
}
Если полезно иметь ссылку на указанный тип для значения, то вместо этого более эффективно использовать оператор «как».
// Wrong
if ( o is SomeType ) {
SomeType st = (SomeType)o;
st.TakeSomeAction();
}
// Right
SomeType st = o as SomeType;
if ( st != null ) {
st.TakeSomeAction();
}