Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 枚举为字符串或字符串常量_C#_Enums - Fatal编程技术网

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

C# 枚举为字符串或字符串常量,c#,enums,C#,Enums,我看到一篇博文,我只是好奇。我通常在整个应用程序中对共享字符串使用常量 我想知道你认为前一种方法的优点/缺点是什么?那里的方法使用反射来提取字符串值。如果您正在做一些对性能至关重要的事情,请不惜一切代价避免这样做。。。如果你想要速度,常数是一种方法 更重要的是,在那里使用方法会严重损害编译器优化器,因为每个“常量”现在都变成了“方法调用”。我会坚持使用字符串常量,因为它们很简单,不需要任何反射来获取值。这在很大程度上取决于您存储的字符串类型 如果它类似于向用户显示的文本,那么首先就不应该使用常量

我看到一篇博文,我只是好奇。我通常在整个应用程序中对共享字符串使用
常量


我想知道你认为前一种方法的优点/缺点是什么?

那里的方法使用反射来提取字符串值。如果您正在做一些对性能至关重要的事情,请不惜一切代价避免这样做。。。如果你想要速度,常数是一种方法


更重要的是,在那里使用方法会严重损害编译器优化器,因为每个“常量”现在都变成了“方法调用”。

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

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

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

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


另外,像那样使用反射会慢得多,但这可能对您并不重要。

您的字符串常量是否通过某个系列或集合相互关联?如果不是,不要使用枚举。它们可能暗示这种关系。整数的枚举也不需要顺序相关。如果您使用.net 4,请使用已经存在的描述,不要重新发明轮子:)它可能是唯一的,但您在开发时必须利用的是“pro”和“contra”。两者都不是唯一性。