在C#的select语句中具有相同整数值的枚举?

CJ7*_*CJ7 0 c# enums switch-statement

如何对以下内容进行编码以便编译C#?编译器错误是:the label 'case 3:' already occurs in this switch statement.

switch (customerType)
{
    case CustomerType.Private:
        return externCustomerType.P;
    case CustomerType.Business:
        return externCustomerType.B;
    case CustomerType.Interstate:
    case CustomerType.Overseas:
        return externCustomerType.I;
    default:
        return externCustomerType.N;
}

public enum CustomerType
{
    Unknown = 0,
    Private = 1,
    Business = 2,
    Interstate = 3,
    Overseas = 3
}
Run Code Online (Sandbox Code Playgroud)

Szy*_*mon 8

这足够了

switch (customerType)
{
    case CustomerType.Private:
        return externCustomerType.P;
    case CustomerType.Business:
        return externCustomerType.B;
    case CustomerType.Interstate:
        return externCustomerType.I;
    default:
        return externCustomerType.N;
}
Run Code Online (Sandbox Code Playgroud)

由于这两个OverseasInterstate具有3值,使之工作,如果customerType有任一值(因为实际上它只是一个3值,你需要使用不同的枚举值分配相同的整数值).


如果你想独立于枚举的值,重写你switchifs:

if (customerType == CustomerType.Private)
    return externCustomerType.P;
else if (customerType == CustomerType.Business)
    return externCustomerType.B;
else if (customerType == CustomerType.Overseas || customerType == CustomerType.Interstate)
    return externCustomerType.I;
else 
    return externCustomerType.N;
Run Code Online (Sandbox Code Playgroud)