替代if语句方法适用于更大的列表

时间:2017-06-14 05:00:28

标签: c# arrays if-statement unity5

if(teamData[0].currentGoals > teamData[1].currentGoals)
    {
        teamData[0].teamWins += 1;
        teamData[1].teamLosses += 1;
    }

else if (teamData[0].currentGoals < teamData[1].currentGoals)
    {
        teamData[1].teamWins += 1;
        teamData[0].teamLosses += 1;
    }

else if (teamData[0].currentGoals == teamData[1].currentGoals)
    {
        teamData[0].teamDraws += 1;
        teamData[1].teamDraws += 1;
    }

代码基本上做了它需要做的事情,但它不适用于我正在进行的项目。 请帮助任何资源阅读和建议将不胜感激。

编辑: 对不起,我在解释事情上并不是那么棒。我希望能够比较另外30多个项目(if语句)。我需要赢,输,结果。 这是一场足球锦标赛。

2 个答案:

答案 0 :(得分:1)

我假设“更大阵列”意味着更多游戏,并且游戏总是有两个团队:

// Game class has teamData list/array:
List<Game> games = new List<Game>();

// ... Populate games

foreach (var game in games) {
  var g0 = game.teamData[0].currentGoals, g1 = game.teamData[1].currentGoals;

  if (g0 > g1) {
    game.teamData[0].teamWins++;;
    game.teamData[1].teamLosses++;
  }
  else if (g1 > g0) {
    game.teamData[1].teamWins++;;
    game.teamData[0].teamLosses++;
  }
  else {
    game.teamData[0].teamDraws++;
    game.teamData[1].teamDraws++;
  }
}

答案 1 :(得分:0)

怎么样:

var t1 = teamData[0];
var t2 = teamData[1];

t1.teamWins = t1.currentGoals > t2.currentGoals ? t1.teamWins + 1 : t1.teamWins;
t1.teamLosses = t1.currentGoals < t2.currentGoals ? t1.teamLosses + 1 : t1.teamLosses;
t1.teamDraws = t1.currentGoals == t2.currentGoals ? t1.teamDraws + 1 : t1.teamDraws;

t2.teamWins = t2.currentGoals > t1.currentGoals ? t2.teamWins + 1 : t2.teamWins;
t2.teamLosses = t2.currentGoals < t1.currentGoals ? t2.teamLosses + 1 : t2.teamLosses;
t2.teamDraws = t2.currentGoals == t1.currentGoals ? t2.teamDraws + 1 : t2.teamDraws;

或:

...
if (t1.currentGoals > t2.currentGoals) {t1.teamWins++; t2.teamLosses++;}
else if (t1.currentGoals < t2.currentGoals) {t1.teamLosses++; t2.teamWins++;}
else {t1.teamDraws++; t2.teamDraws++;}

对于多个游戏,只需使用refs将方法中的一个插入方法:

private void processResult(ref [yourTeamDataType] t1, ref [yourTeamDataType] t2) { ... comparison code ... }

只是比较:

foreach (var game in games)
    processResult(ref game.teamData[0], ref game.teamData[1]);