为什么不允许使用nameof(object)?

在C#6.0中,您可以这样写:

var instance = default(object); var type = typeof(object); 

他们有相同的结果:

 var instance = default(System.Object); var type = typeof(System.Object); 

但你不能写这个:

 var name = nameof(object); 

它会生成以下错误:

表达式术语“对象”无效。

但是你仍然可以这样写:

 var name = nameof(System.Object); 

为什么nameof(object)不能编译?

不同之处在于objectObject类的同义词,而nameof()不适用于同义词。

同样适用于nameof(int) vs nameof(Int32)