What is the difference between casting and using “as” in C#?

The differences are:

  • If a cast fails, it throws an InvalidCastException.
  • If the as operator fails, it just returns a null reference.
  • You can’t use as with non-nullable value types (e.g. you can’t do “o as int“).
  • The cast operator is also used for unboxing. (as can be used to unbox to a nullable value type.)
  • The cast operator can also perform user-defined conversions.

EDIT: I’ve written elsewhere about when I feel it’s appropriate to use which operator. That might be worth a read…

Leave a Comment