A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乔利柱 中级黑马   /  2012-10-22 08:56  /  1148 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 乔利柱 于 2012-10-24 13:18 编辑

枚举在什么情况下用? 感觉一般情况下用不到enum关键字,谁能给举个例子?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

1 个回复

正序浏览
一个使用枚举的例子:
    /// <summary>
    /// 枚举类型可以使用Flags位域标志,表示这些枚举类型可以作为位域(即一组标志)处理。
    /// C#位域主要用于.Net里面对于某一个事物有多种混合状态时使用,为了更好的实现混合状态,我们可以在枚举中加入位域标签。
    /// </summary>
    [Flags]
    public enum StudyTime
    {
        //定义枚举常量时使用2倍递增,这样可以使组合的枚举常量中的各个标志都不重叠。
         星期一 = 1 << 0,
        星期二 = 1 << 1,
        星期三 = 1 << 2,
        星期四 = 1 << 3,
        星期五 = 1 << 4,
        所有时间 = 星期一 | 星期二 | 星期三 | 星期四 | 星期五
    }
    public enum Course
    {
        计算机 = 1 << 0,
        英语 = 1 << 1,
        国学 = 1 << 2,
        数学 = 1 << 3,
    }
    class Program
    {
        static void Main(string[] args)
        {
            //按位或"|"、按位与"&"、按位异或"^"、按位取反"~"。
            Console.WriteLine(1 | 2);//将十进制转换为二进制,然后求并集。
              Console.WriteLine(1 & 3);//将十进制转换为二进制,然后求交集。
              Console.WriteLine(1 ^ 3);//将十进制转换为二进制,然后从并集中去除交集。
            Console.WriteLine(~10);//(~0=-1,~1=-2,~2=-3,~-1=0,~-2=1,~-3=2)运算规则:加1后取负
              Console.WriteLine("\t课程表");
            Dictionary<Course, StudyTime> dictionary = new Dictionary<Course, StudyTime>();
            StudyTime[] dateArr = new StudyTime[] { StudyTime.星期一, StudyTime.星期二, StudyTime.星期三, StudyTime.星期四, StudyTime.星期五 };
            dictionary.Add(Course.计算机, StudyTime.所有时间);
            dictionary.Add(Course.国学, StudyTime.星期一 | StudyTime.星期二);
            dictionary.Add(Course.数学, StudyTime.星期三 | StudyTime.星期四);
            dictionary.Add(Course.英语, StudyTime.星期三|StudyTime.星期四|StudyTime.星期五);
            foreach (StudyTime date in dateArr)
            {
                Console.Write(date+":");
                foreach (var item in dictionary)
                {
                    if ((item.Value & date) > 0)
                    {
                        Console.Write(item.Key+" ");
                    }
                }
                Console.WriteLine();
            }
            StudyTime studyTime = StudyTime.星期一 | StudyTime.星期二|StudyTime.星期三;
            Console.WriteLine("使用 | 符号(求并集): " + studyTime.ToString());
            studyTime = (StudyTime.星期二 | StudyTime.星期三) & studyTime;
            Console.WriteLine("使用 & 符号(求交集):" + studyTime.ToString());
            studyTime = (StudyTime.星期二|StudyTime.星期三|StudyTime.星期五) ^ studyTime;
            Console.WriteLine("使用 ^ 符号(从并集中去除交集):" + studyTime.ToString());
            Console.WriteLine("使用&(~)从组合状态中去掉一个元素:"+(StudyTime.所有时间 & (~studyTime)).ToString());           
            studyTime = ~(StudyTime.星期一 | StudyTime.星期二);
            Console.WriteLine("使用 ~ 符号(加1后取负):" + studyTime.ToString());
            Console.ReadKey(true);
        }
    }

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马