一种缩短if语句的方法

时间:2014-08-28 15:16:34

标签: c# if-statement

我有一个包含四个数字的数组,我需要将它与另一个数字数组进行比较。我应该说明这些数字中有多少是正确的,有多少是正确的数字,但没有正确放置。

F.eks:
Code:    1501
Guess:   1305
Right numbers:    3
Right placement:  2

正确的位置很容易。但正确的数字部分有点棘手。这就是我解决它的方法:

//Check if number exist in context
        Rn = 0;

        for (int g = 0; g < 4; g++)
        {
            resent[g] = 6;
        }

        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                if 
                    (
                        guess[i] == Numbers[j] 
                     && guess[i] != resent[0] 
                     && guess[i] != resent[1] 
                     && guess[i] != resent[2] 
                     && guess[i] != resent[3]
                    )
                {
                    Rn++;
                    resent[i] = guess[i];
                }
            }

        }
        ConsolePost("Right Numbers: " + Rn);

有没有更好的方法来做到这一点。或者可以缩短这个吗?

像:

if(guess[i] == Numbers[j] && != resent[0-3])
{
    Something;
}

2 个答案:

答案 0 :(得分:5)

您可以使用Any()来检查您是否决定更改数组的大小:

!resent.Any(c=>c==guess[i])

答案 1 :(得分:2)

您可以在Enumerable.Take(4)上使用resent和包含:

!resent.Take(4).Contains(guess[i])

所以你的支票可能是:

if(guess[i] == Numbers[j] && !resent.Take(4).Contains(guess[i]))

请参阅:Enumerable.Take<TSource> Method

  

从a的开头返回指定数量的连续元素   序列

如果resent尺寸始终为4,那么您可以跳过Take(4),而只需使用Contains,如:

if(guess[i] == Numbers[j] && !resent.Contains(guess[i]))