我正在使用Visual Studio 2008并尝试转换此switch语句
switch (salesOrderPayment.PaymentCardKey.ToUpper()) {
case "MC":
ValidateCreditCard(salesOrderPayment,errorMessages);
break;
case "VISA":
ValidateCreditCard(salesOrderPayment, errorMessages);
break;
case "TELECHECK":
//ValidateTelecheck(salesOrderPayment, errorMessages);
ValidateAchCheck(salesOrderPayment, errorMessages);
break;
case "ACH":
ValidateAchCheck(salesOrderPayment, errorMessages);
break;
使用我创建的枚举
public enum PaymentType {
MC,
VISA,
AMEX,
TELECHECK,
CASH,
ACH }
我试过这个:
switch (Enum.Parse(typeof(PaymentType),salesOrderPayment.PaymentCardKey.ToUpper()))
但得到红色的波浪形线条,当我将鼠标悬停在它上面时说"预期的整数类型的值"。
答案 0 :(得分:3)
试试这个:
switch ((PaymentType)Enum.Parse(typeof(PaymentType),salesOrderPayment.PaymentCardKey,true)))
注意转换为PaymentType
类型,同时请注意您的切换案例必须是枚举字段而不是字符串。
我使用Enum.Parse的另一个重载,以bool ignoreCase
为参数,利用它,以便您不需要ToUpper
来电。
答案 1 :(得分:2)
当Enum.Parse方法返回一个Object(参见here)时,您需要将Enum.Parse
的结果转换为PaymentType
。