【发布时间】:2017-10-09 09:20:42
【问题描述】:
从this question 我了解到C# 6.0 中引入的nameof() 运算符不适用于同义词。所以你可以写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 等一起使用?我的猜测错了吗(即不可能实现)?或者这是一个设计的选择?
【问题讨论】:
-
除非语言设计者之一回答这个问题,否则这个问题的任何答案都将主要基于意见......
-
简单地说:
typeof和default处理类型,而nameof处理更多。真正的问题是为什么 你认为nameof应该使用类似于例如typeof. -
@MatthewWatson,是的,可能你是对的......你认为我应该把问题改成类似 “在同义词上禁止
nameof()的利弊是什么? "?它会更少基于意见吗?或者你知道我们怎样才能得到某个 C# 人的确认吗? :-) -
你不能在 StackOverflow 上提出这样的问题,因为它无法得到客观的回答。
标签: c# nameof type-synonyms