Does boxing and unboxing really bridge the gap between value types and reference types?
No, not really. Reference types have the concept of identity and equality, while value types only have equality. Boxing and unboxing does not change this fundamental difference. Autoboxing in C# allows value types to go back and forth between being objects, but each time a value type becomes an object it acquires a new identity.