获取null对象的基础类型

Kyl*_*yle -2 c#

User x = null;
object o = x;
// determine type with only reference to o
Run Code Online (Sandbox Code Playgroud)

并且泛型不起作用

Eri*_*ert 13

想象一下,你有一个图书馆.想象一下,你还有一盒卡片,每本书一张卡片.(较年轻的读者:在计算机使这些系统过时之前,库实际上曾经有过这样的系统.)

现在想象你有两个托盘.一个托盘标记为"科幻小说",另一个托盘标记为"任何书籍".

SF托盘是空的.

你告诉助理图书管理员"转储任何托盘中的任何东西,然后复印SF托盘中的任何东西,并将副本放入任何托盘中."

倾倒任何托盘后,它变空,并且由于SF托盘是空的,因此无需复印,因此任何托盘都保持空置.

你的问题的类似物现在是"这张书在任何托盘中的卡片的类型是什么?" 答案是"没有这种类型,因为任何托盘都是空的 ".这不像SF托盘是空的,以某种方式"感染"任何托盘使其"空,但SF味道".

那有意义吗?变量只是存储位置; null引用是指"这根本不引用任何东西"的引用,并且没有"什么都没有"的味道.

有关此区别的更多信息,请参阅我关于此主题的文章:

http://blogs.msdn.com/b/ericlippert/archive/2009/10/29/i-have-a-fit-but-a-lack-of-focus.aspx


Fre*_*örk 9

o是一个null引用(注意这里的措辞;它是空引用,而不是对空对象的引用).这些参考文献没有不同的类型.因此,您无法确定最初为该null值赋值的变量的类型.