从这个问题中,我了解到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等一起使用?我的猜测错了吗(即不可能实现)?或者这是一个设计选择?