【发布时间】:2016-11-30 12:43:15
【问题描述】:
场景
我有一个类用于声明在程序周围使用的string 常量:
public static class StringConstants
{
public const string ConstantA = "ConstantA";
public const string ConstantB = "ConstantB";
// ...
}
本质上,常量的实际值是什么并不重要,因为它在分配和使用时使用。这只是为了检查。
常量名称是不言自明的,但我想尽量避免多次使用相同的字符串值。
我想做的事
我知道nameof() 是在编译时评估的,因此完全可以将const string 的值分配给nameof() 成员。
为了省去写出这些神奇的字符串,我考虑过使用nameof()这个常量本身。
像这样:
public static class StringConstants
{
public const string ConstantA = nameof(ConstantA);
public const string ConstantB = nameof(ConstantB);
// ...
}
问题...
我猜除了重构之外,使用nameof() 并没有真正的好处?
在分配常量时使用nameof() 有什么影响吗?
我应该坚持只使用硬编码字符串吗?
【问题讨论】:
-
nameof 提供编译时安全
-
很遗憾,不支持。
-
@PauloMorgado - 我不确定你的意思。什么不支持?
-
哎呀!!!我的错!不支持使用 nameof 本身分配一个变量 -
var c = nameof(c); -
唯一的缺点是它会在几分之一秒内减慢您的构建速度以获取符号及其名称。除此之外,它只是一个字符串。