有没有我可以使用数组或其他东西来减少代码在这里?

Tra*_*vis 4 c# arrays if-statement

我有7个单选按钮和5个复选框.这是用于选择第一个单选按钮并选择第一个复选框以及其他复选框的代码.这仅在选中第一个复选框时有效.这意味着我已经为每个复选框重新创建了这个.对于第一个单选按钮,这是有意义的.我意识到这样做只会是一大堆代码.它有用,但它非常非常草率.

所以,我想知道是否有某种方式我可以在数组或其他东西中做到这一点?我只是想缩短这个很多.任何有关这方面的帮助将不胜感激.谢谢.

if (radBrick.Checked)
{
    intBrick = 100000;
    intTotal = intBrick;

    if (chkBasketball.Checked)
    {
        intBasketball = 50000;
        intTotal = intBrick + intBasketball;

        if (chkFire.Checked)
        {
            intFire = 500;
            intTotal = intBrick + intBasketball + intFire;

            if (chkMarble.Checked)
            {
                intMarble = 20000;
                intTotal = intBrick + intBasketball + intFire + intMarble;

                if (chkSteel.Checked)
                {
                    intStain = 10000;
                    intTotal = intBrick + intBasketball + intFire + intStain + intMarble;

                    if (chkGarage.Checked)
                    {
                        intGarage = 5000;
                        intTotal = intBrick + intBasketball + intFire + intStain + intMarble + intGarage;
                    }
                }
            }
        }
    }

    lblTotal.Text = intTotal.ToString("C");
}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 6

是的,你可以 - 这是如何:

int[] add = new[] {100000, 50000, 500, 20000, 10000, 50000};
bool[] check = new[] {radBrick.Checked, chkBasketball.Checked, chkFire.Checked, chkMarble.Checked, chkSteel.Checked, chkGarage.Checked};
int sum = 0;
for (int i = 0 ; i != add.Length ; i++) {
    if (check[i]) {
        sum += add[i];
    }
}
Run Code Online (Sandbox Code Playgroud)