繁体   English   中英

循环通过int值

[英]Cycle through int values

我需要一些输入。

假设您有一个基于int的枚举,其值为1到10.如果您有一个变量,例如,对应于7的值,那么如何最简单地将其设置为给定范围内的下一个值而不超出界限? 如果该值达到限制,则应将其自身重置为该范围中的第一个。

我想要一个单线解决方案。 我不想做++,然后检查和重置值,而且它必须在C#和JavaScript中都有效。 我想Math对象中的某些东西可能会有所帮助,我不知道......

谢谢

递增,减1,然后取模,然后加1(因为你的枚举是1的)。

((++i - 1) % N + 1

(N = 10,您的Enum可以承受的最大值。)

如果您知道限制并确保0和该上限之间的所有数字都被枚举占用,则可以使用模运算符

myEnum = (myEnum + 1) % maxValue;

您可能需要进行类型转换:

myEnum = (MyEnumType) (((int) myEnum + 1) % maxValue);

编辑:我注意到你有一个基于枚举的枚举。 如果你真的需要这个,那么你必须像莱斯曼在他的回答中所说的那样做:

// This statement may look weird, but it works :)
myEnum = (myEnum % maxValue) + 1
// Produces (for myEnum with maxValue set to 4, i.e. allows 1,2,3 & 4 as valid values):
//  1 => 2
//  2 => 3
//  3 => 4
//  4 => 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM