如何通过使用"?"缩小这个特殊的行(杂乱)操作者

Bug*_*Bug 2 c# operators

我正在开展一个项目,我必须查看其他人的代码并对其进行修改.然而,由于我班上的许多同学都很擅长编程,所以很多人都有这样一个混乱的组织.我被赋予即兴创作的代码有很多缺陷和冗余的冗余行.我正在尽力清理它们,但由于我的经验不足,我发现很难清理它们.线条如

if (turnElapsed[1] == 2)
{
    turnElapsed[0] += 1;
    turnElapsed[1] = 0;
}
turnElapsed[1]++;
Run Code Online (Sandbox Code Playgroud)

对我来说看起来很多余.我相信,必须有一个更好的方法来编写它的简单版本.所以我尝试了下面的代码,但似乎无法正常工作.

turnElapsed[0] += (turnElapsed[1]++ == 2) ? 1 ; 0 ;
turnElapsed[1] = (turnElapsed[1] == 2 ) ? 0; turnElapsed[1];
Run Code Online (Sandbox Code Playgroud)

EMP*_*EMP 5

首先,您使用的;是分隔符,而不是:语法错误.其次,你在turnElapsed[1]第一行递增,这意味着当它到达第二行时它将不再等于2 - 这与原始逻辑不同.这就是您的版本无法正常运行的原因.

但是,如果您确实修复了这些错误,我认为您的代码不会更容易阅读.原件更具可读性,因为它更清楚地表达了意图.您可以阅读并将其表达为"如果turnElapsed [1]为2然后......".您的替代方案占用的线路更少,但更"神秘".原代码的另一个好处是,你可以把断点的括号内,如果你想打破时,如果条件是真的 - (?)你不能做到这一点与三元运算符.