例如,我有一个枚举类型BW 里面有BW1~BW在外面输入700个数字,只要数字是1、3、5、7、10、30、50、70、100、500、700,就可以转换成相应的枚举类型。
例如枚举变量BW bw,输入50,找到相应的BW50枚举项(即bw=BW.BW50),特定应用。
public enum BW { BW1=0, BW3=1, BW5=2, BW7=3, BW10=4, BW30=5, BW50=6, BW70=7, BW100=8, BW300=9, BW500=10, BW700=11, }
采用转化,遍历BW枚举成员获得其成员名称BW_XXX,用正则表达式去除非数字部分,转化为纯数字,用于判断外部输入的数字。如果在1、3、5、7、10、30、50、70、100、500、700中,则使用Enum.Parse(typeof(BW),perName)获取相应的枚举项,并提供给SetBW函数用作参数。
public void SetBandWith(double para) { foreach(string perName in Enum.GetValues(typeof(BW))) { string strValue = System.Text.RegularExpressions.Regex.Replace(perName,@"[^0-9] ","0"); int bandWidht = Convert.ToInt32(strValue); if(bandWidth == (int)para) { SetBW(Enum.Parse(typeof(BW),perName)); } } } public void SetBW(BW bw) { //... }
系统中设置的枚举类型BW变量 localBW,例如,将其枚举项对应的数字转换数字,localBW = BW.BW将700转化为700值
public double GetBandWith(BW localBW) { string name = Enum.GetName(typeof(BW),localBW); string strValue = System.Text.RegularExpressions.Regex.Replace(name,@"[^0-9] ",""); return Convert.ToDouble(strValue); }