If an object is initialized to null, it is [not possible to get the type information](https://stackoverflow.com/questions/930147/c-sharp-get-type-of-null-object) because the reference doesn't point to anything.

However, when I debug and I hover over a variable, it shows the type information. Only the static methods are shown, but still, it seems to know the type. Even in release builds.

Does the debugger use other information than just reflection of some sort to find out the datatype? How come it knows more than I? And if it knows this, why isn't it capable of [showing the datatype in a `NullReferenceException`](https://stackoverflow.com/questions/3663802/get-type-of-null-reference-object-for-object-reference-not-set-to-an-instance-of)?