最近开始接触到枚举了。因为是偶尔用用,所以老是记不住。今天我就用文档把常用的几个记录下来,以便用下次查找,同时也方便同行。

虽然用了几次枚举,但至今对它了解仍不深,望补充、交流、学习

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()));
            }
        }

 注:枚举类中不能有相同的键值