Как использовать значение массива для переключения случая (не номер массива)

Как Вы используете ЗНАЧЕНИЕ номера массива в противоположность тому, какое число в массиве это для определения случая? В моем коде:

for (int x = 0; x < 3; x++)
        {
            switch (position[x])
            {
                case 0:
                    label1.Text = people[x];
                    break;
                case 1:
                    label2.Text = people[x];
                    break;
                case 2:
                    label3.Text = people[x];
                    break;
            }
        }

Когда это выполняется, это использует x в положении [] в противоположность значению положения [x] для определения который случай использовать. Например, когда x 0, но значение положения [x] равняется 1, это использует случай 0. Как я получаю значение вместо этого?

Править: Мой код был действительно проблемой.... По некоторым причинам отладка рано утром имеет эффект создания ложных изображений... :P Как к вашему сведению, здесь был правильный код...

for (int x = 0; x < 3; x++)
        {
            if (position[x] == 2)
            {
                position[x] = 0;
            }

            else
            position[x]++;

        }

        for (int x = 0; x < 3; x++)
        {
            int val = position[x];
            switch (val)
            {
                case 0:
                    label1.Text = people[x];
                    break;
                case 1:
                    label2.Text = people[x];
                    break;
                case 2:
                    label3.Text = people[x];
                    break;
            }

В верхнем первом выступлении положения [x] я вместо этого поместил только x. Спасибо за всю справку!

7
задан Bloodyaugust 27 January 2010 в 22:35
поделиться

1 ответ

Попробуйте это:

    for (int x = 0; x < 3; x++)
    {
        int val = position[x];
        switch (val)
        {
            case 0:
                label1.Text = people[x];
                break;
            case 1:
                label2.Text = people[x];
                break;
            case 2:
                label3.Text = people[x];
                break;
        }
    }

Может быть, что-то легче было бы сказать:

for(int x = 0; x < 3; x++)
{
    Label label = MyForm.ActiveForm.Controls["label" + position[x]] as Label;
    if (label != null) label.Text = people[x];
}
4
ответ дан 7 December 2019 в 14:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: