使int成为多个值?

时间:2017-02-17 16:23:03

标签: c# for-loop int

有没有办法让int值成为多个值? 在这里你可以看到代码,我做一个迷你游戏作为概念的证明。 目前我有x发生在4号循环,y发生在9号循环。

有没有办法在其他循环上重复这些动作,而不会像这样大乱:i == 4 || i == 14 ||我== 18

我想问的是,是否可以只写i == a 然后有一个多个值。

如果你还没想到,我是C#的初学者,所以如果你能以一种易于理解的方式解释它,我会非常感激。 如果我写的内容有点难以理解,那么我很抱歉不是母语为英语的人,只要问你是否不确定我的意思。

for (int i = 0; i < 50; i++)
{
    string input;
    input = Console.ReadKey().Key.ToString();
    Console.Clear();
    if (input == "A") Animation.frame1();
    else Animation.fall();
    if (i == 4) Animation.blocklow2();
    if (i == 9) Animation.blockhigh2();
    input = Console.ReadKey().Key.ToString();
    Console.Clear();
    if (input == "W" && i == 4) Animation.blockjump();
    if (input == "S" && i == 9) Animation.blockduck();
    if (input == "D" && i != 4 && i != 9) Animation.frame2();
    else if (input != "W" && i == 4) Animation.fall();
    else if (input != "S" && i == 9) Animation.smack();
    if (i == 3) Animation.blocklow();
    if (i == 8) Animation.blockhigh();
}

3 个答案:

答案 0 :(得分:4)

您可以if (new int[] { 4, 14, 18 }.Contains(i))检查多个值。

答案 1 :(得分:1)

存储要检查的整数列表,然后使用.Contains

List<int> frame2ints = new List<int>{4,9};
if (input == "D" && !frame2ints.Contains(i)) Animation.frame2();

答案 2 :(得分:0)

在某些情况下,您可以执行按位测试,以查看您的数字中是否设置了某些位:

if ((x & 4) != 0)
{
    // This case covers numbers
    // 4, 5, 6, 7, 12, 13, 14, and many others...
}

您的问题的一般答案是否定的,只有使用有关您正在测试的值的其他知识然后使用该知识才有意义。

另一种选择是测试一个数字是否属于一个序列,就像HHLV在其他答案中所说的那样。

那么,你是如何得到价值观4,14和18的?