枚举类型问题请教?
1.为何枚举不能定义在main()函数中呢?
2.强制转换成该枚举类型,不存在的一个值为何也会转换成功呢?
比如下面,将99转成tmp型,结果变成99,可是这个值并不在tmp类型中呀?
    enum tmp
    {
        a = 1,
        b = 2,
        c = 3,
        d = 4
    }    class Program
    {
        static void Main(string[] args)
        {
            tmp aa=(tmp)3;
            Console.WriteLine(aa.ToString());
            aa = (tmp)99;
            Console.WriteLine(aa.ToString());            Console.ReadKey();
        }
    }

解决方案 »

  1.   

    为何枚举不能定义在main()函数中呢?
    --->
    什么类型都不能再Main中定义...
      

  2.   


                tmp aa = (tmp)3;
                Console.WriteLine(aa.ToString());
                aa = (tmp)99;
                Console.WriteLine(((tmp)7).ToString("f"));            if (Enum.IsDefined(typeof(tmp), 99))
                    Console.WriteLine("99 is difined");
                else
                    Console.WriteLine("99 is not difined");看看这个的输出...默认情况下,枚举中每个元素的基础类型是 int。可以使用冒号指定另一种整数值类型。99可以转换为tmp,判断是否定义,可以使用Enum.IsDefined
      

  3.   

    这样即可。    class Program
        { enum tmp
        {
            a = 1,
            b = 2,
            c = 3,
            d = 4
        }        static void Main(string[] args)
            {
                tmp aa=(tmp)3;
                Console.WriteLine(aa.ToString());
                aa = (tmp)99;
                Console.WriteLine(aa.ToString());            Console.ReadKey();
            }
        }