我有一个巨大的检查列表,检查例如,如果整数是4或10,如果它是4,它将此int更改为10,反之亦然,所以我的检查将是这样的:
int i = getval(); if (i == 4) { i = 10; } else if (i == 10) { i = 4; }
我的问题是有另一种方法可以做到这一点,而无需检查每个条件.
解决方法
如果你有一个巨大的列表,你可能会考虑一些列表结构.
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; }
这适用于巨大的交换对列表.
如果您使用重复的号码拨打AddExchangePair,例如(7,14)和(14,16)你会得到一个例外.您可能必须考虑在这种情况下该怎么做.