C# 使int为多个值?

C# 使int为多个值?,c#,for-loop,int,C#,For Loop,Int,有没有办法使int值具有多个值? 在这里你可以看到代码,我正在做一个小游戏作为概念的证明。 目前,x发生在循环4,y发生在循环9 有没有办法在其他循环上重复这些操作,而不让它像这样一团糟:i==4 | | i==14 | | i==18 我想问的是,是否可以只写i==a 然后有一个可以是多个值的函数 如果你还没有想到,我是C#的初学者,所以如果你能用一种简单易懂的方式来解释,我将非常感激。 如果我写的有点难理解,那么我很抱歉不是以英语为母语的人,问问你是否不确定我的意思 for (int i =

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

有没有办法在其他循环上重复这些操作,而不让它像这样一团糟:i==4 | | i==14 | | i==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();
}
for(int i=0;i<50;i++)
{
字符串输入;
输入=Console.ReadKey().Key.ToString();
Console.Clear();
if(input==“A”)Animation.frame1();
else动画。fall();
如果(i==4)Animation.blocklow2();
如果(i==9)Animation.blockhigh2();
输入=Console.ReadKey().Key.ToString();
Console.Clear();
如果(输入==“W”&&i==4)Animation.blockjump();
if(input==“S”&&i==9)Animation.blockduck();
如果(输入==“D”&&i!=4&&i!=9)Animation.frame2();
如果(输入!=“W”&&i==4)Animation.fall();
如果(输入!=“S”&&i==9)Animation.smack();
如果(i==3)Animation.blocklow();
如果(i==8)Animation.blockhigh();
}

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

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

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

if ((x & 4) != 0)
{
    // This case covers numbers
    // 4, 5, 6, 7, 12, 13, 14, and many others...
}
对你的问题的一般回答是否定的,只有使用关于你正在测试的值的额外知识,然后使用这些知识才有意义

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


那么,您是如何获得值4、14和18的?

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

if ((x & 4) != 0)
{
    // This case covers numbers
    // 4, 5, 6, 7, 12, 13, 14, and many others...
}
对你的问题的一般回答是否定的,只有使用关于你正在测试的值的额外知识,然后使用这些知识才有意义

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


那么,您是如何获得值4、14和18的?

存储要检查的整数列表,然后使用
。包含

List<int> frame2ints = new List<int>{4,9};
if (input == "D" && !frame2ints.Contains(i)) Animation.frame2();
List frame2ints=新列表{4,9};
如果(输入==“D”&&!frame2ints.Contains(i))Animation.frame2();

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

List<int> frame2ints = new List<int>{4,9};
if (input == "D" && !frame2ints.Contains(i)) Animation.frame2();
List frame2ints=新列表{4,9};
如果(输入==“D”&&!frame2ints.Contains(i))Animation.frame2();

根据代码,它看起来像循环中在特定时间运行的动画,猜测i是循环中帧的时间。我猜OP正试图通过检查i来重用动画资源。我认为按位操作的效果不太好,因为OP需要特定的数字,按位操作会给出比OP需要更多的数字,或者需要一个非常复杂的检查,而这正是OP试图避免的。根据代码,它看起来像是在循环中的特定时间运行的动画,我猜我是循环中帧的时间。我的猜测是OP试图通过检查i来重用动画资源。我不认为按位操作可以很好地实现这一点,因为OP需要特定的数字,按位操作会给出比OP需要更多的数字,或者需要非常复杂的检查,而这正是OP试图避免的。