日期:2014-05-17  浏览次数:20948 次

关于C#枚举的问题,本人新手,求助~
新人,在自学C#。

现在遇到一个问题,定义了Gender枚举

要求客户输入性别,再赋值给sex这个Gender类型的枚举。

代码里使用了try catch ,调试时,输入的值是 数值 的话

却成功赋值给了sex....? 可我定义的枚举里,只有"男""女"

这里我搞不懂,求助。

麻烦可以的话,请指出问题所在,并且告知原因,因为本人自学,完全是新人。



namespace 枚举
{
    /// <summary>
    /// 这里定义了一个叫Gender的枚举
    /// </summary>
    enum Gender 
    {
        男=1,
        女
    }
    class Program
    {
        static void Main(string[] args)
        {
            //这里让用户输入性别。
            Gender sex;
            Console.WriteLine("请输入您的性别:");

            while(true)
            {
                try
                {
                    string input = Console.ReadLine();
                    sex = (Gender)(Enum.Parse(typeof(Gender), input));
                    Console.WriteLine("您的性别是:" + sex);
                    break;
                }
                catch
                {
                    Console.WriteLine("请输入“男”或者“女”:");
                    continue;
                }
            }
            Console.ReadKey();
        }
    }
}

c# 枚举

------解决方案--------------------
枚举可以与int类型相互转换
你这个枚举,下面两个等式是成立的
(int)Gender.男==1
(int)Gender.女==2

下面两句转换后,sex1是男,sex2是女
Gender sex1=(Gender)1;
Gender sex2=(Gender)2;


------解决方案--------------------
引用:
引用:引用:可是我随意输入一串数字,都可以赋值到sex里哦。。。这不对吧。。
事实就是如此,枚举型可以赋为任何数字,只是无意义不合法

哦,所以说,枚举是可以赋任何数值