Лучший способ кодирования этого оператора if? - PullRequest
2 голосов
/ 03 января 2011

У меня есть еще один вопрос к вам, очень полезные люди. Я использую много операторов if, многие из которых просто повторяются, и я уверен, что они могут быть сокращены. Это мой текущий бит кода

if (Globals.TotalStands <= 1)
{
    ScoreUpdate.StandNo2.Visible = false;
    ScoreUpdate.ScoreStand2.Visible = false;
    ScoreUpdate.ScoreOutOf2.Visible = false;
}

if (Globals.TotalStands <= 2)
{
    ScoreUpdate.StandNo3.Visible = false;
    ScoreUpdate.ScoreStand3.Visible = false;
    ScoreUpdate.ScoreOutOf3.Visible = false;
}

if (Globals.TotalStands <= 3)
{
    ScoreUpdate.StandNo4.Visible = false;
    ScoreUpdate.ScoreStand4.Visible = false;
    ScoreUpdate.ScoreOutOf4.Visible = false;
}

if (Globals.TotalStands <= 4)
{
    ScoreUpdate.StandNo5.Visible = false;
    ScoreUpdate.ScoreStand5.Visible = false;
    ScoreUpdate.ScoreOutOf5.Visible = false;
}

if (Globals.TotalStands <= 5)
{
    ScoreUpdate.StandNo6.Visible = false;
    ScoreUpdate.ScoreStand6.Visible = false;
    ScoreUpdate.ScoreOutOf6.Visible = false;
}

if (Globals.TotalStands <= 6)
{
    ScoreUpdate.StandNo7.Visible = false;
    ScoreUpdate.ScoreStand7.Visible = false;
    ScoreUpdate.ScoreOutOf7.Visible = false;
}

if (Globals.TotalStands <= 7)
{
    ScoreUpdate.StandNo8.Visible = false;
    ScoreUpdate.ScoreStand8.Visible = false;
    ScoreUpdate.ScoreOutOf8.Visible = false;
}

Как вы можете видеть, существует огромное количество кода для выполнения чего-то простого (что я делаю и для некоторых других форм, и я уверен, что должен быть лучший способ кодирования этого, который дает тот же результат? Я новичок в коде, поэтому, пожалуйста, будьте осторожны, код на C #, а программное обеспечение - Visual Studio 2008 pro.

Ответы [ 2 ]

8 голосов
/ 03 января 2011

Большинство ваших свойств должны быть массивами (или какой-либо другой коллекцией).Например:

ScoreUpdate.StandNo6

может быть таким:

ScoreUpdate.StandNos[5]

Тогда вы можете использовать цикл вместо всех этих if операторов:

for (int i = 0; i < Globals.TotalStands; ++i)
{
    ScoreUpdate.StandNos[i].Visible = true;
    ScoreUpdate.ScoreStands[i].Visible = true;
    ScoreUpdate.ScoreOutOfs[i].Visible = true;
}

Или эта небольшая вариация может быть лучше, когда есть массив ScoreUpdates, а не три отдельных массива:

for (int i = 0; i < Globals.TotalStands; ++i)
{
    var scoreUpdate = ScoreUpdates[i];
    scoreUpdate.StandNo.Visible = true;
    scoreUpdate.ScoreStand.Visible = true;
    scoreUpdate.ScoreOutOf.Visible = true;
}
1 голос
/ 03 января 2011

Вы должны составить три массива или списка элементов управления и использовать цикл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...