is and as operators test the type of an object. The typeof keyword returns the type of a variable. Casts try to convert an object to a variable of a different type.
as if you're not sure if the cast is valid, and follow it with a null check. Use explicit casting (type)variable when you're sure of the cast.as. If you expect the cast to succeed, always use a proper (T) cast. The reason is that it's a lot easier to debug a failed cast if you used a proper (T) cast, as the exception is thrown at the point that the cast failed and the exception message is helpful, as opposed to getting a NullReferenceException at some point after a failed as cast with no information on why the cast failed/close isasasasastypeof(type)variable(T)(T)NullReferenceException