我需要一些意见。
假设你有一个基于int的枚举,值为1到10.如果你有一个变量,比如说,对应于7的值,你怎么能最简单地将它设置为给定范围内的下一个值而不用掉界限?如果值达到限制,则应将其自身重置为范围中的第一个。
我想要一个单线解决方案。我不想做++,然后检查和重置值,而且它必须在C#和JavaScript中都有效。我想Math对象中的某些东西可能会有所帮助,我不知道......
感谢
答案 0 :(得分:6)
增量,减1,然后模数,然后加1(因为你的枚举是从1开始的。)
((++i - 1) % N + 1
(N = 10,你的Enum可以承受的最大值。)
答案 1 :(得分:1)
如果您知道限制并确保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