using System; namespace Funique { /// /// Enum cycle utility class
/// This can only use for default int enum type
/// ------------------------------------------------
/// 列舉循環功能類
/// 這只能用於預設正整數 Key 的列舉 ///
/// Enum Type public class EnumCycle where T : Enum { /// /// Next enum value
/// ------------------------------------------------
/// 下一個列舉值 ///
/// /// public int Next(int v) { v++; if (v >= Enum.GetNames(typeof(T)).Length) v = 0; return v; } /// /// /// public T Next(T v) { return (T)Enum.ToObject(typeof(T), Next((int)(object)v)); } /// /// Last enum value
/// ------------------------------------------------
/// 上一個列舉值 ///
/// /// public int Last(int v) { v--; if (v <= -1) v = Enum.GetNames(typeof(T)).Length - 1; return v; } /// /// /// public T Last(T v) { return (T)Enum.ToObject(typeof(T), Last((int)(object)v)); } } }