Does the is
operator indicate whether or not an object is an instance of a certain class, or only if it can be casted to that
if(something is X) checks if the underlying type of something is X. This is significantly different from checking if a type supports casting to X since many types can support casts to X without being of type X.
Conversely the as operator attempts a conversion to a particular type and assigns null if source type is not within the inheritance chain of the target type.