You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用switch语句简化C#石头剪刀布蜥蜴史波克的if-else逻辑?

用Switch语句简化石头剪刀布蜥蜴史波克的胜负判断

针对这段冗长的if-else代码,我们可以通过将玩家选择与电脑选择拼接成唯一字符串的方式,用switch语句大幅简化逻辑,同时保持代码直观易懂,适合初学者学习:

// 先处理平局情况
if (myChoice == compChoice)
{
    winner = "none";
    tie++;
}
else
{
    // 拼接选择组合作为switch的判断键
    string choiceCombination = $"{myChoice}-{compChoice}";
    
    switch (choiceCombination)
    {
        // 玩家获胜的所有组合,共用同一处理逻辑
        case "Rock-Scissors":
        case "Rock-Lizard":
        case "Paper-Rock":
        case "Paper-Spock":
        case "Scissors-Paper":
        case "Scissors-Lizard":
        case "Lizard-Spock":
        case "Lizard-Paper":
        case "Spock-Scissors":
        case "Spock-Rock":
            winner = "player";
            win++;
            break;
        // 排除平局和玩家获胜后,剩余情况均为电脑获胜
        default:
            winner = "computer";
            lose++;
            break;
    }
}

逻辑说明

  • 优先处理平局:直接对比玩家与电脑的选择,快速排除平局场景,避免后续冗余判断。
  • 组合判断键:用字符串拼接生成唯一标识(如"Rock-Scissors"),让switch可以精准匹配胜负场景。
  • 批量复用逻辑:switch支持多个case共享同一代码块,把所有玩家获胜的情况集中列出,减少重复代码。
  • 默认分支兜底:排除平局和玩家胜利的情况后,剩下的必然是电脑获胜,无需再逐一列举。

这种写法结构清晰,没有复杂计算,非常适合给其他C#初学者讲解游戏胜负判断的逻辑优化思路。

内容的提问来源于stack exchange,提问作者1R0N65

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 20:55:19