枚举为字符串或字符串常量

时间:2011-05-19 20:42:32

标签: c# enums

我遇到了this博文,我只是很好奇。我通常总是在我的应用程序中使用constants作为共享字符串。

我想知道你认为以前的方式做这件事的利弊是什么?

3 个答案:

答案 0 :(得分:5)

我会坚持使用字符串常量,因为它们很简单,并且不需要任何反射来获取值。

答案 1 :(得分:2)

该方法使用反射来提取字符串值。如果你正在做一些性能关键的事情,不惜一切代价避免这种情况......如果你想要速度,常数就是你想要的。

通过使用这种方法,你会严重损害编译器优化器,因为每个'常量'现在变成'方法调用'。

答案 2 :(得分:2)

这在很大程度上取决于你要存储的字符串类型。

如果它类似于向用户显示的文本,那么您不应该首先使用常量。只读字段更好,资源更好。

我在建议的解决方案中可以看到的主要缺点是它会非常不直观:当我看到字符串常量或字段的使用时,我立即知道发生了什么。如果我看到SomeEnum.SameValue.GetStringValue(),我会认为它几乎与ToString()会做什么,而不是一些有趣的事情。

此外,使用这样的反射会慢很多,但这对你来说可能无关紧要。