使用For循环代替If语句

本文关键字:If 语句 For 循环 使用 | 更新日期: 2023-09-27 18:13:52

我的代码根据索引号从comboBox中选择项目,然后为每个项目分配一个特定的字节。为此,我使用了If语句,并且不得不重复它很多次。

我知道如何使用循环非常基本,但我不知道如何做到这一点,当每个项目需要一个不同的值分配给它。

        if (weaponcamCombo.SelectedIndex == 0)
        {
            PS3.SetMemory(Offsets.WeaponCamo + (0x80 * (uint)camoclassUD.Value) + (0x564 * (uint)camosoldierUD.Value), new byte[] { 0x0A });
        }
        if (weaponcamCombo.SelectedIndex == 1)
        {
            PS3.SetMemory(Offsets.WeaponCamo + (0x80 * (uint)camoclassUD.Value) + (0x564 * (uint)camosoldierUD.Value), new byte[] { 0x0B });
        }
        if (weaponcamCombo.SelectedIndex == 2)
        {
            PS3.SetMemory(Offsets.WeaponCamo + (0x80 * (uint)camoclassUD.Value) + (0x564 * (uint)camosoldierUD.Value), new byte[] { 0x0C });
        }

当你看到一个特定的字节被分配给每个项目时,我想知道我如何在循环中仍然这样做?

谢谢

使用For循环代替If语句

添加weaponcamCombo.SelectedIndex0x0A

if(weaponcamCombo.SelectedIndex>-1)
{
    PS3.SetMemory(Offsets.WeaponCamo + (0x80 * (uint)camoclassUD.Value) + (0x564 * (uint)camosoldierUD.Value), new byte[] { 0x0A + weaponcamCombo.SelectedIndex  });
}

或使用查找表(实际上是一个数组)

var values = new byte[]{0x0f,0x6a};
if(weaponcamCombo.SelectedIndex>-1)
{
    PS3.SetMemory(Offsets.WeaponCamo + (0x80 * (uint)camoclassUD.Value) + (0x564 * (uint)camosoldierUD.Value), new byte[] { values[weaponcamCombo.SelectedIndex] });
}

您可以创建一个函数来设置内存,然后使用索引调用它。

public void SetMemory(int index)
{ 
    if(index >= 0)
    {
        PS3.SetMemory(Offsets.WeaponCamo + (0x80 * (uint)camoclassUD.Value) + (0x564 * (uint)camosoldierUD.Value), new byte[] { (0x0A + index)});
    }
}

然后像这样调用它:

    SetMemory(weaponcamCombo.SelectedIndex);