【发布时间】:2010-10-13 03:42:52
【问题描述】:
我有一个这样定义的枚举:
public enum eRat { A = 0, B=3, C=5, D=8 };
所以给定值eRat.B,我想得到下一个是eRat.C
我看到的解决方案是(没有范围检查)
Array a = Enum.GetValues(typeof(eRat));
int i=0 ;
for (i = 0; i < a.GetLength(); i++)
{
if (a.GetValue(i) == eRat.B)
break;
}
return (eRat)a.GetValue(i+1):
对于这么简单的事情来说,这太复杂了。你知道更好的解决方案吗?? eRat.B+1 或 Enum.Next(Erat.B) 之类的?
谢谢
【问题讨论】:
-
这取决于你。但是假设是 A,所以我们不必引发异常。
-
@husayt:代码已更新。现在当你传递“D”时,将返回“A”。