为什么不允许使用 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)
在 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)