I am curious to know if all casts in C# result in boxing, and if not, are all casts a costly operation?
Example taken from Boxing and Unboxing (C# Programming Guide)
No.
Boxing means putting a value into a new reference type instance.
Standard casts between reference types do not result in any allocations. (User-defined casts can do anything)