读书人

关于C#枚举的有关问题本人新手

发布时间: 2013-02-15 15:46:56 作者: rapoo

关于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里哦。。。这不对吧。。
事实就是如此,枚举型可以赋为任何数字,只是无意义不合法

哦,所以说,枚举是可以赋任何数值?尽管枚举中没有具体定义这个数值?


没错!
当然,不建议这么做,毫无意义且会造成程序可读性很差

读书人网 >C#

热点推荐