我有一个巨大的检查列表,检查例如,如果整数是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)
我的问题是有另一种方法可以做到这一点,而无需检查每个条件.
您正在寻找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)
如果你有一个巨大的列表,你可能会考虑一些列表结构.
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,您将收到异常.您可能必须考虑在这种情况下该怎么做.
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |