class Program
    {
        public enum Genders
        {
            Male=0, 
            Female=1
        }
        static void Main(string[] args)
        {
            student stu = new student();
            stu.Gender = (int)Genders.Female;
            int num = (int)stu.Gender;
            switch (num)
            {
                case 0:
                    Console.WriteLine("男");
                    break;
                case 1:
                    Console.WriteLine("女");
                    break;
                default:
                    Console.WriteLine("错误代码");
                    break;
            }
            Console.ReadLine();
        }
    }
    class student
    {
        public enum Genders
        {
            Male, Female
        }
        private Genders gender;        internal Genders Gender
        {
            get { return gender; }
            set { gender = value; }
        }
    }
如果我把stu.Gender = (int)Genders.Female;改为stu.Gender = (int)Genders.Male;就行,如果不改就报“错误 1 无法将类型“int”隐式转换为“ConsoleApplication1.student.Genders”。存在一个显式转换(是否缺少强制转换?) D:\C#\ConsoleApplication1\ConsoleApplication1\Program.cs 18 26 ConsoleApplication1

解决方案 »

  1.   

    枚举元素的默认基础类型为 int。默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1
    所以stu.Gender = (int)Genders.Male就行,此时Genders.Male为0
    我觉得你这里没有必要两次转换了
     stu.Gender = (int)Genders.Female; 
     int num = (int)stu.Gender; 
    直接改成
      int num = (int)Genders.Female; 
    不就行了吗
      

  2.   

    stu.Gender = (student.Genders)((int)Genders.Female);