C#枚举的转换问题
classProgram{enumGender{男,女}staticvoidMain(string[]args){Console.WriteLine("Input");s...
class Program
{
enum Gender
{
男,
女
}
static void Main(string[] args)
{
Console.WriteLine("Input");
string s =Console.ReadLine();
Gender sex = (Gender)(Enum.Parse(typeof(Gender), s));
Console.WriteLine(sex);
Console.ReadKey();
}
}
当输入0,输出男,输入1,输出女。在输入大于1的整数就会输出该整数,这是为什么? 展开
{
enum Gender
{
男,
女
}
static void Main(string[] args)
{
Console.WriteLine("Input");
string s =Console.ReadLine();
Gender sex = (Gender)(Enum.Parse(typeof(Gender), s));
Console.WriteLine(sex);
Console.ReadKey();
}
}
当输入0,输出男,输入1,输出女。在输入大于1的整数就会输出该整数,这是为什么? 展开
展开全部
默认下枚举基础类型为int,而第一个枚举值默认为0,第二个为1,第三个以此类推,所以你所定义的枚举完整的格式如下
enum Gender : int
{
男 = 0,
女 = 1
}
所以当使用Enum.Parse进行解析时,只能识别出0与1与,其它无法识别直接输出,然后你也可以直接使用字符来进行解析,而不仅仅是数字 ,如下
var sex = (Gender)(Enum.Parse(typeof(Gender), "男"));
var sex = (Gender)(Enum.Parse(typeof(Gender), "女"));
展开全部
如果没猜错的话:
运行这段(Gender)(Enum.Parse(typeof(Gender), s));是通过枚举的索引进行了隐式匹配.
所以输入0,输出男,输入1,输出女,没有找到索引则输出本身值.
因为数据库 bit类型字段就与C#中进行了隐式匹配.bit=0,则为C#就是false 反则为true
希望能帮到你!
运行这段(Gender)(Enum.Parse(typeof(Gender), s));是通过枚举的索引进行了隐式匹配.
所以输入0,输出男,输入1,输出女,没有找到索引则输出本身值.
因为数据库 bit类型字段就与C#中进行了隐式匹配.bit=0,则为C#就是false 反则为true
希望能帮到你!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C# 的枚举默认是integer类型的值, 第一个元素值为0, 第二个元素值为1, 以此类推.
也可以自己定义枚举的值, 如下:
enum Gender {
男 = 3, // 起始值默认为零, 可以自定义为零或任意正整数
女 = 8 // 后面的元素值一定要大于前一个元素值, 比如这里值设为2就不行
}
这时你再输入0或1就没用了, 只有输入对应的值才会显示对应的枚举项
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C# 自定义枚举类型的时候,没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int型,从0开始。枚举类型与基础类型可以相互转换,你输入的大于1没有对应的枚举,就只能输出该整数了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询