使用For循环而不是If语句

时间:2014-07-21 21:03:08

标签: c# loops for-loop

我的代码通过其索引号从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 });
        }

当你看到为每个项目分配一个特定的字节时,我想知道我是如何做到这一点但是在一个循环中?

由于

2 个答案:

答案 0 :(得分:2)

weaponcamCombo.SelectedIndex添加到0x0A

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] });
}

答案 1 :(得分:0)

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

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);