微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如果检查则反转

我有一个巨大的检查列表,检查例如,如果整数是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)你会得到一个例外.您可能必须考虑在这种情况下该怎么做.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐