每三次迭代C#

时间:2017-04-07 14:28:41

标签: c# loops

我有这个循环,每当我的变量是3的倍数时,对我执行一个简单的任务,目前我必须创建一个大循环,其中包含3的每个倍数和逻辑OR(3,6,9, ...)。我想知道是否有更有效的方法来做到这一点。

这是我的代码段:

if (waveCounter == 3 || waveCounter == 6 || waveCounter == 9 || waveCounter == 12)
{
    amount = 0.03f;
    dayNight.lightAmout = amount;
    dayNight.light.intensity = Mathf.Lerp(dayNight.light.intensity, dayNight.lightAmout, fadeTime * Time.deltaTime);
}
else
{
   amount = 1f;
   dayNight.lightAmout = amount;
   dayNight.light.intensity = Mathf.Lerp(dayNight.light.intensity, dayNight.lightAmout, fadeTime * Time.deltaTime);
}

我的目标是摆脱在if语句中写出3的倍数,并且每当我的waveCounter变量是3的下一个倍数时仍然达到相同的目标。

3 个答案:

答案 0 :(得分:20)

if((waveCounter % 3) == 0)

模运算:它将数字除以3并检查余数。可被3除数的数字没有余数(因此==0

答案 1 :(得分:8)

使用模数运算符,简单来说,它取得除法后的余数。 https://msdn.microsoft.com/en-us/library/0w4e0fzs.aspx

如果余数为0,那么您知道该数字可以被3整除:

window.location.hash

答案 2 :(得分:4)

这个问题可以用模数(或除法余数)运算符解决,如下所示。

if (0 == waveCounter % 3)
{
    // do stuff
}
else
{
    // do other stuff
}