c#枚举类型的初始值

C#枚举类型的默认值为0,如果在使用过程中没有给枚举类型的变量赋值,则系统会自动默认赋值为0,而不是null,非常需要注意。最好在定义枚举类型变量的时候赋初值,否则不小心就容易出错。

本来还以为是定义的枚举类型中的第一个值,但不一定如此,只有第一个值定义为0值的时候才是,其它都不是。

无论自己定义的枚举类型是否包含定义了0值,枚举类型的默认值都是0。这个结论与在enum类型定义时是否定义了0值、定义的0值所在位置都没有关系。有0值的话,无论其在enum定义中的顺序放在哪里,程序都把0值认为是自己的默认值。

枚举类型变量要得到其数值,直接用 (int)enumVariable进行强制转换就可以,要得到字符串字面量,用ToString()方法即可。

(一)测试代码如下:

    public enum NameEnum
    {
        Zhang=0,
        Li=1,
        Wang=2
    }
    static void Main(string[] args)
    {
         NameEnum theName = default(NameEnum);
         Console.WriteLine(theName);
         Console.WriteLine((int)theName);
         Console.Read();
    }

测试结果为:

Zhang
0

(二)测试代码如下

    public enum NameEnum
    {
        Zhang=1,
        Li=2,
        Wang=3
    }
    private static void EnumTest()
        {
            NameEnum theName=default(NameEnum);
            Console.WriteLine(theName);

            Console.Read();
        }

测试结果为:

0
0

(三)测试代码如下:

    public enum NameEnum
    {
        Zhang=1,
        Li=0,
        Wang=2
    }
    static void Main(string[] args)
     {
         NameEnum theName = default(NameEnum);
         Console.WriteLine(theName);
         Console.Read();
     }

测试结果为:

Li
0

(四)测试代码如下

    public enum NameEnum
    {
        Zhang,       //对于为明确给出数值的,第一个就是0值
        Li,
        Wang
    }
     static void Main(string[] args)
     {
         NameEnum theName = default(NameEnum);
        Console.WriteLine(theName);
         Console.Read();
     }

测试结果为:

Zhang
0

(五)更多的测试

    public enum NameEnum
    {
        Zhang=1,
        Li=2,
        Wang=3
    }
    class Program
    {
        static NameEnum sName;
        static void Main(string[] args)
        {
            //用new初始化
            NameEnum name = new NameEnum();
            Console.WriteLine((int)name);

            //用default初始化
            NameEnum name1 = default(NameEnum);
            Console.WriteLine((int)name1);

            //sName是成员变量,由系统默认初始化
            Console.WriteLine((int)sName);


            Console.WriteLine("以下输出所有定义的成员");
            Array a = Enum.GetValues(typeof(NameEnum));
            foreach(var i in a)
            {
                Console.WriteLine((int)i);
                Console.WriteLine(i);  //相当于Console.WriteLine(i.ToString())
            }

            Console.Read();
        }
    }

测试结果如下:

0
0
0
以下输出所有定义的成员
1
Zhang
2
Li
3
Wang

补充:写完这边博文后,又发现了MachiealFactory的博客解释得更加清楚,该博客得链接为https://blog.csdn.net/xiaominggunchuqu/article/details/77991602

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值