【发布时间】:2010-05-08 08:02:38
【问题描述】:
能不能做得更好
public static EnumFactorType GetFactorEnum(string str)
{
Standardization e = new Standardization();
switch (str.ToLower())
{
case "beta":
e.FactorType = EnumFactorType.BETA;
break;
case "bkp":
e.FactorType = EnumFactorType.BOOK_TO_PRICE;
break;
case "yld":
e.FactorType = EnumFactorType.DIVIDEND_YIELD;
break;
case "growth":
e.FactorType = EnumFactorType.GROWTH;
break;
case "mean":
e.FactorType = EnumFactorType.MARKET_CAP;
break;
case "momentum":
e.FactorType = EnumFactorType.MOMENTUM;
break;
case "size":
e.FactorType = EnumFactorType.SIZE;
break;
case "stat_fact1":
e.FactorType = EnumFactorType.STAT_FACT_1;
break;
case "stat_fact2":
e.FactorType = EnumFactorType.STAT_FACT_2;
break;
case "value":
e.FactorType = EnumFactorType.VALUE;
break;
}
return e.FactorType;
}
如果我创建一个静态类(比如常量)并声明像
这样的变量public static string BETA= "beta";
然后如果我尝试将它放在 Case 表达式中,例如
Case Constants.BETA : e.FactorType = EnumFactorType.BETA;
break;
那么编译器会报错。(很期待)
那么还有其他方法吗?(我无法更改switch语句)
使用 C#3.0
谢谢
【问题讨论】:
-
如果您可以更改
switch语句,请使用Enum.Parse。 -
@KennyTM:但是,开关中的某些字符串与枚举中的名称不对应。
标签: c#-3.0