最近开始接触到枚举了。因为是偶尔用用,所以老是记不住。今天我就用文档把常用的几个记录下来,以便用下次查找,同时也方便同行。
虽然用了几次枚举,但至今对它了解仍不深,望补充、交流、学习
1.Parse()
根据枚举value值求key。返回类型int
Convert.ToInt32(Enum.Parse(typeof(EMB.BLL.Enum.Resource.Layout), datstr))
2.GetName
根据枚举key值求value。返回类型string
Enum.GetName(typeof(EMB.BLL.Enum.Resource.Layout),2)
3.GetNames
把枚举的value值保存在数据中。返回类型array
Enum.GetNames(typeof(SN.ERP.Enum.upfile.exten))
惹要循环枚举的value值,可循环数据array
4.惹要循环枚举的key和value值
可这样:foreach (System.Collections.Generic.KeyValuePair<int, string> oE in SN.Common.Utils.Trans(typeof(EMB.BLL.Enum.Resource.FlagID)))
能过oE.Key, oE.Value得到key 和value值
5.枚举中的包含关系
例:枚举
/// <summary> /// 合作研究16 /// </summary> 合作研究 = 0x0010, /// <summary> /// 合作教学32 /// </summary> 合作教学 = 0x0020, /// <summary> /// 访问交流64 /// </summary> 访问交流 = 0x0040, /// <summary> /// 国际/国内合作 /// </summary> 合作交流 = 合作研究 | 合作教学 | 访问交流,
要实现的效果是,当第一个下拉列表选择“合作交流”,第二个下拉列表就梆定枚举“合作研究 | 合作教学 | 访问交流”。
switch (cid) { case 62:count = (int)Enum.Artic.EnumClass.合作交流;break; case 9:count=(int)Enum.Artic.EnumClass.研究平台;break; } foreach (string s in Enum.GetNames(typeof(Enum.Artic.EnumClass))) { int currentid = (int)Enum.Parse(typeof(Enum.Artic.EnumClass), s); if ((currentid & count) > 0 && count != currentid) { ddlEnumClass.Items.Add(new ListItem(s, currentid.ToString())); } }
注:枚举类中不能有相同的键值
转载于:https://www.cnblogs.com/sunnysmile/archive/2009/05/13/1456101.html