【发布时间】:2020-03-10 02:10:57
【问题描述】:
所以我想做的很简单。
我正在尝试在一些原始类型上运行nameof(),因为我需要这些常量来满足特定要求。
但是当我尝试为 nameof(bool) 执行此操作时,它说 nameof() 在当前上下文中不存在。
这似乎是所有同义词的情况?
有没有其他方法可以做到这一点,或者我错过了什么。
我想做的是
public static readonly string BoolConstant= nameof(bool);
预期结果:
BoolConstant= "bool";
我必须把所有这些常量都写下来吗?
【问题讨论】:
-
可能是您的语言版本过时了。
nameof()我相信直到 C# 6.0 才引入。 -
@FreakyAli:我怀疑你没有明白
nameof的意思。这是为了表达你想要一些符号元素的名称可以在重构时改变。使用nameof(bool)毫无意义,因为无法将bool重构为其他关键字。如果您想要字符串"bool",那么只需输入该字符串即可。 -
“因为我需要这些常量来满足某种要求”,这听起来总是像XY problem。 为什么你需要这个?对于您实际需要做的事情,也许有更好的解决方案。
-
@FreakyAli:不,这不是“有点明显” - 我们没有您在其他地方使用 nameof 的信息,而这正是您会 如果您使用的是旧版本的 C#,请获取此信息。请给那些试图帮助你的人多一点尊重。
-
@JHBonarius 基本上我有一种情况,我必须根据从 API 作为字符串的一部分发送的数据类型来解析数据。现在我的 API 不在 C# 中,所以我基本上从 API 发送 bool 进行布尔解析。我后来意识到,nameof 不能与关键字一起使用。所以现在我改变了我的 API 以匹配我可以做的事情,即 nameof(Boolean)