在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);
生成以下错误:
无效表达式term 'object'。
但是你仍然可以这样写:
var name = nameof(System.Object);
为什么nameof(object)
不能编译?
不同之处在于object
是Object
类的同义词,而nameof()
不起同义词作用。
同样适用于nameof(int)
和nameof(Int32)