C#:根据布尔值选择运算符(在一行中)

时间:2014-06-12 18:48:28

标签: c# operators

我正试图躲开光滑的衬垫,因为我觉得它可能是可能的。

我会将我的代码放在下面,然后尝试解释一下我正在努力实现的目标。

        for (int p = 0; p < 2; p++)
        {
            foreach (string player in players[p])
            {
                if (PlayerSkills[player].streak_count *>* 0) //This line
                    PlayerSkills[player].streak_count++;
                else
                    PlayerSkills[player].streak_count = 0;
            }
        }

*(p == 0?&gt;:&lt;)根据p选择比较运算符。

当然,我写的是垃圾。但基本上我想在p == 0时使用&gt; 0,在p&gt;&gt; 0时使用&lt; 0。有没有很好的方法来实现这个目标?

3 个答案:

答案 0 :(得分:9)

好吧,你应该使用最具可读性的东西,即使它不是一样的。那说......

// Invert the count for all but the first player and check for a positive number
if (PlayerSkills[player].streak_count * (p==0 ? 1 : -1) > 0)

答案 1 :(得分:4)

我不知道光滑,但以下和/或组合一行:

if ((p == 0 && PlayerSkills[player].streak_count > 0)
     || PlayerSkills[player].streak_count < 0)
...

这将只执行一次数组索引(由于首先发生p == 0条件),因此相当于&#34;三元&#34;你写的(虽然有点冗长)。

答案 2 :(得分:0)

p > 0 ? whenGreaterThanZero : whenZeroOrLess ;

E.g。

int p = 1; bool test = p > 0 ? true : false ;

test = True