如果检查则反转

met*_*hod 3 c# if-statement

我有一个巨大的检查列表,检查例如,如果整数是4或10,如果它是4,它将此int更改为10,反之亦然,所以我的检查将是这样的:

int i = getval();
if (i == 4)
{
    i = 10;
}
else if (i == 10)
{
    i = 4;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是有另一种方法可以做到这一点,而无需检查每个条件.

Ani*_*han 6

您正在寻找switch语句.

int i = getval();
switch(i)       
      {         
         case 4:   
            i = 10;
            break;                  
         case 10:            
            i = 4;
            break;                 
         default:            
            Console.WriteLine("Invalid selection. Please select 4 or 10.");            
            break;      
       }
Run Code Online (Sandbox Code Playgroud)


Cas*_*rah 6

如果你有一个巨大的列表,你可能会考虑一些列表结构.

static Dictionary<int, int> exchange = new Dictionary<int, int>();

static Constructor()
{
    AddExchangePair(4, 10);
    AddExchangePair(3, 12);
    ...
}

static void AddExchangePair(int a, int b)
{
    exchange.Add(a,b);
    exchange.Add(b,a);
}

public staic bool Exchange(ref int value)
{
    int newValue = 0;
    bool exchanged = exchange.TryGetValue(value, out newValue);
    if (exchanged) value = newValue;
    return exchanged;
}
Run Code Online (Sandbox Code Playgroud)

这适用于巨大的交换对列表.

如果您使用重复的号码(例如(7,14)和(14,16)调用AddExchangePair,您将收到异常.您可能必须考虑在这种情况下该怎么做.