是否可以以更好的方式有沒有寫這個switch語句中的任何替代方法(C#3.0)
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;
}
做。如果我創建了一個靜態類(比如Constatant),並聲明變量像
public static string BETA= "beta";
,然後如果我嘗試把在CASE表達式像
Case Constants.BETA : e.FactorType = EnumFactorType.BETA;
break;
那麼編譯器會報告錯誤。(相當EXPEC TED)
那麼,有沒有其他的方式(我canot改變開關語句)
使用C#3.0
感謝
如果您可以更改'switch'語句,請使用'Enum.Parse'。 – kennytm 2010-05-08 08:11:02
@KennyTM:但是,交換機中的某些字符串不符合枚舉中的名稱。 – Guffa 2010-05-08 08:14:44