枚举中一个比较怪异的问题。如下代码所示,100分相赠。 public enum Rank { First, Second, Third } class Program { static void Main(string[] args) { Rank r = 0; //没错 Rank rr = 1;//有错,为什么?????????? }}请帮忙解答,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Rank rr = (Rank)1; 要加类型转换的 Rank rr=(Rank)1; 因为0是所有未赋值的值类型的默认值...enum成员如果没有显式指定值,默认为第一个枚举成员赋0值...也因此...MSDN中明确规定:创建枚举时,应选择最合理的默认值并赋给它一个零值。这便使得只要在创建枚举时未为其显式赋值,则所创建的全部枚举都将具有该默认值。 Rank rr = (Rank)1; 学习了但是如果:public enum Rank { First=1, Second, Third } class Program { static void Main(string[] args) { Rank r = 0; //0不是枚举成员值,也没有检查。我知道如果枚举对应的值如果枚举中没 //有,输出则是对应的Int32 0 }} 当然不检查...5楼说的还不清楚吗?值类型不可为null,必须有值,默认就是0...所以才有设计准则...一定要在简单枚举中提供一个零值。如果可能,将此值命名为 None。如果 None 不适合,请将零值赋给最常用的值(默认值)。你这种只能属于设计不合规范,问题代码... 谢谢各位了,Rank rr=(Rank)1;这个我知道的,我就是不太清楚为什么0可以直接给,而1就不行。给分结贴了。谢谢各位了。 如何为事件设置队列 ORM是啥?用c#怎么实现? 【初学ASP.NET】疑惑 二进制读取四个字节 怎么换位呢? 如何让groupbox的边框变成不规则形状? 关于DataGrid的用法 手动填加groupbox的anchor 属性无效 高手帮手看看这是什么类型的加密 关于两个窗口相互调用后出现的内存占用问题 怎麼不能建立Window From窗體了? 重新生成解决方案出错 自定义控件 生成dll
Rank rr = (Rank)1;
但是如果:
public enum Rank
{
First=1,
Second,
Third
}
class Program
{
static void Main(string[] args)
{
Rank r = 0; //0不是枚举成员值,也没有检查。我知道如果枚举对应的值如果枚举中没
//有,输出则是对应的Int32 0
}
}