C# 按范围换行整数值限制

C# 按范围换行整数值限制,c#,math,range,C#,Math,Range,我试图包装一个整数值的范围,这样,如果它超过最大值,那么要添加的剩余量将从最小值开始增加。范围应介于0和9之间,包括0和9 我看过钳制函数,但我不认为这是我想要的 如果有帮助,这里有一个应该发生的例子: int n1 = 8; n1 += 4; //n1 should equal 2 n1 -= 6; //n1 should equal 6 n1 += 4; //n1 should equal 0 我建议将算法放在一个函数中,以变量作为参考: void SpecialIncrease(r

我试图包装一个整数值的范围,这样,如果它超过最大值,那么要添加的剩余量将从最小值开始增加。范围应介于0和9之间,包括0和9

我看过钳制函数,但我不认为这是我想要的

如果有帮助,这里有一个应该发生的例子:

int n1 = 8;

n1 += 4;
//n1 should equal 2

n1 -= 6;
//n1 should equal 6

n1 += 4;
//n1 should equal 0

我建议将算法放在一个函数中,以变量作为参考:

void SpecialIncrease(ref int n, int increment, int min, int max)
{
    if (n + increment > max)
        n += increment - max - 1;
    else if (n + increment < min)
        n += max + 1 + increment;
    else
        n += increment;
}

我想这就是你的意思:

public int Normalize(int value, int modulo)
{
    int remainder = (value % modulo);

    return (remainder < 0) ? (modulo + remainder) : remainder;
}
印刷品

2
6
0

因此,这里假设最大值为
10
,并且您想要超过
10
的值。从
0
开始,反之亦然,以
0
作为最小值?请编辑您的问题,使其更有意义。我认为你需要实现这一点。我不认为存在这样一个函数。我已经编辑了这个问题,以便更好地理解这个问题。被接受的答案提供了一个代码截取,可能对您有用,只需稍加修改。@Steve他有一个最小值和最大值,当从顶部和底部超过时必须重置,以便
2-6=6
而不是
-4
8+4=2
而不是
12
。您要寻找的是数学公式模运算符(遗憾的是,这在c#开箱即用中没有实现)。但是,此答案显示了实现此目的的计算:
int n1 = 8;

n1 = Normalize(n1 + 4, 10);
Console.WriteLine(n1);

n1 = Normalize(n1 - 6, 10);
Console.WriteLine(n1);

n1 = Normalize(n1 + 4, 10);
Console.WriteLine(n1);
2
6
0