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)你会得到一个例外.您可能必须考虑在这种情况下该怎么做.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...