从这个问题中,我了解到nameof()
C# 6.0 中引入的运算符不适用于同义词。所以你可以写nameof(System.Object)
但不能nameof(object)
。
现在,还有另外 2 个类似的运算符,typeof()
和default()
,它们在同义词上完美地工作。你可以写:
default(object);
default(int);
typeof(string);
typeof(long);
也:
default(Object);
default(Int32);
typeof(String);
typeof(Int64);
结果是一样的。
我猜想也可以构建nameof()
操作符以使用同义词进行操作。
所以问题是:为什么它没有实现与object
, string
,int
等一起使用?我的猜测错了吗(即不可能实现)?或者这是一个设计选择?