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

Why is nameof(object) not allowed?

在 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);

它生成以下错误:

Invalid expression term 'object'.

但你仍然可以这样写:

var name = nameof(System.Object);

为什么nameof(object)编译不通过?

不同之处在于 object 是 class Object 的同义词,而 nameof() 不适用于同义词。

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