我有一个像枚举
public enum DecimailPrecision
{
One,
Two,
}
Run Code Online (Sandbox Code Playgroud)
和班级一样
class DecimailPrecision1
{
public const string One = "#,##0.0";
public const string Two = "#,##0.00";
}
Run Code Online (Sandbox Code Playgroud)
我想用枚举从类中检索const字符串.我已经使用if和切换为
string format = string.Empty;
switch (value)
{
case DecimailPrecision.One:
format = DecimailPrecision1.One.ToString(); break;
case DecimailPrecision.Two:
format = DecimailPrecision1.Two.ToString(); break;
default:
format = DecimailPrecision1.Two.ToString(); break;
}
if (value == "One"){
format = DecimailPrecision1.One.ToString();}
else if (value == "Two"){
format = DecimailPrecision1.Two.ToString();}
}
Run Code Online (Sandbox Code Playgroud)
我需要一个更好的方法因为我在枚举中有很多项目.
谢谢.
为什么不创建一个Dictionary<DecimailPrecision, string>并保留映射?
这样你就可以DecimailPrecision在字典中查找你的值并检索适当映射的字符串.
您甚至可以将映射存储在config中并从中读取,因此您无需重新编译代码即可添加新映射.
要明确地将其应用于您的代码(我建议您将consts 的名称更改为DecimalPrecisionFormat):
var precisionMap = new Dictionary<DecimailPrecision, string>
{
{ DecimailPrecision.One, DecimailPrecision1.One }
, { DecimailPrecision.Two, DecimailPrecision1.Two }
};
var formatTwo = precisionMap[DecimailPrecision.Two];
Run Code Online (Sandbox Code Playgroud)