[英]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.