public enum ooo
        {
            o1,
            o2,
            o3
        }        private void button1_Click(object sender, EventArgs e)
        {
            ooo a = ooo.o3;
            ooo b = ooo.o1 | ooo.o2;
            ooo c = ooo.o3 | ooo.o2 | ooo.o1;
            MessageBox.Show(a.ToString());       //输出 o3,正确,
            MessageBox.Show(b.ToString());       //输出 o2,输出最尾巴的一个?
            MessageBox.Show(c.ToString());       //输出 3,直接和(int)c 一样的结果了。
        }

解决方案 »

  1.   

    可是,不是应该输出类似: o1 o2 o3?
      

  2.   

    默认的o1是0,o2是1,o3是2,再看看位或运算的结果,还有没有什么疑问?
      

  3.   

                ooo a = ooo.o3;
                ooo b = ooo.o1 | ooo.o2;
                ooo c = ooo.o3 | ooo.o2 | ooo.o1;
                MessageBox.Show(a.ToString());       //输出 o3,正确,
                MessageBox.Show(b.ToString());       //输出 o2,输出最尾巴的一个?
                MessageBox.Show(c.ToString());       //输出 3,直接和(int)c 一样的结果了。
    ----------------------------------------
    0与1位或,自然是1。
    0与1和2位或,结果是3,这个超过枚举类型的范围了。
      

  4.   

    现在看了MSDN,汗颜,才知道原来输出是这样。上次看了篇文章,原以为是输出 o1 o2 o3。
    那请问,如何实现输出 o1 o2 o3?
      

  5.   

    o1、o2、o3难道不能直接输出?还是有其他的什么想法?
      

  6.   

    我大概明白了,这样定义看看:        public enum ooo
            {
                o1=1,
                o2=2,
                o3=4
            }
      

  7.   


    芥子 大哥,我知道你的意思。
    我的意思是:
    ooo c = ooo.o3 | ooo.o2 | ooo.o1;我希望可以输出 o3 o2 o1。
    这样可以吗?