Just read this excellent post by Eric Lippert about why it is incorrect to describe references in .NET as a pointer to a memory location
In the article he goes on to explain the differences between a pointer and a reference, and why they are not mutually interchangeable.
I have to admit, I’ve been incorrectly defining a reference. After reading this article from now on my definition of a “reference type” will be a type which contains a reference to an object held internally within the .NET GC. This reference is not *necessarily* a pointer and should be thought of more like a unique handle to the GC’s object than a pointer to a memory address.