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

Mas*_*aus 7 c# c#-6.0 nameof

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

var instance = default(object);
var type = typeof(object);
Run Code Online (Sandbox Code Playgroud)

他们有相同的结果:

var instance = default(System.Object);
var type = typeof(System.Object);
Run Code Online (Sandbox Code Playgroud)

但你不能写这个:

var name = nameof(object);
Run Code Online (Sandbox Code Playgroud)

它会生成以下错误:

表达式术语"对象"无效.

但是你仍然可以这样写:

var name = nameof(System.Object);
Run Code Online (Sandbox Code Playgroud)

为什么nameof(object)不编译?

Jer*_*gen 14

区别在于它object是类的同义词Object,nameof()不适用于同义词.

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

  • 相关文档:https://msdn.microsoft.com/en-au/library/dn986596.aspx"以下值得一提的是产生错误:*预定义类型(例如,int或void)*" (3认同)