A direct throw will not work if the object to which the spell is cast does not match the requested type. Instead of as-cast, null is returned instead. For instance:
object obj = new object();
string str = (string)obj;
However:
object obj = new object();
string str = obj as string;
When the object being thrown is of the type that you are executing, the result will be the same for any syntax: the object succeeded.
Note that you should avoid the as-and-call pattern:
(something as SomeType).Foo();
, , NullReferenceException ClassCastException. , something NULL, ! ,
((SomeType)something).Foo();
ClassCastException, , something, SomeType, NullReferenceException, something null.