Recently there was a nice Slight confusion over reference types and value types in the C# spec on StackOverflow.
Summary:
When structs are value types, but interfaces are reference types, how can a struct implement an interface and still be a value type?
The answer is boxing: when a reference to a struct is needed, a reference object is automatically created, and the value of the struct is box-wrapped into it.
This automatic boxing is really nice, but be aware that when frequently doing this, it can have a huge performance impact.
Thanks Abhina Basu for blogging about boxing structs having interfaces, and the many volunteers on StackOverflow explaining about boxing.
–jeroen