C# 缩短if语句的一种方法
我有一个由四个数字组成的数组,需要与另一个数字数组进行比较。我应该告诉你这些数字中有多少是正确的,有多少是正确的但不是正确的C# 缩短if语句的一种方法,c#,if-statement,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
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);
您可以使用
可枚举。取(4)
并在您的重新发送中包含如下内容:
!resent.Take(4).Contains(guess[i])
if(guess[i] == Numbers[j] && !resent.Contains(guess[i]))
所以你的支票可以是:
if(guess[i] == Numbers[j] && !resent.Take(4).Contains(guess[i]))
见:
从一个数组的开头返回指定数量的连续元素
顺序
如果resent
大小始终为4,则可以跳过Take(4)
,而只使用Contains
如下:
!resent.Take(4).Contains(guess[i])
if(guess[i] == Numbers[j] && !resent.Contains(guess[i]))
您可以使用Any()检查是否决定更改数组的大小:
!resent.Any(c=>c==guess[i])
这应该在代码检查中:guess[i]==Numbers[j]&resent.Take(4)。All(r=>r!=guess[i])
如果resent
的长度是4,那么你可以跳过对的调用。All
尽管有好主意,但我认为你把奥斯卡和所有这些方法混淆了。确保他知道这些扩展方法和lambdas等等。看看他提供的代码。对我来说似乎是一个基本的密码。@VasileMarianFălămaș-这根本没有必要,没有人有责任确保OP对建议的答案有坚定的理解。虽然很好,但我们不必展示我们的运动。如果他“对所有这些方法都感到困惑”,他可以进行进一步的阅读。作为一个侧面,你也可以用它来查看是否有数字匹配(顺序与否),rn=guess.Intersect(数字).Count()
。如果resent[]
的大小总是4,你可以省略。当然可以取(4)
。@MatthewWatson,是的,我应该把这句话加到我的回答中是的正是我需要的^^^谢谢;)哈哈^^这一个奏效了,谢谢。但不是我需要的^^