C#数据类型之枚举类型

一、枚举类型的定义

public enum 枚举名称:枚举数据类型(枚举的数据类型可以省略,默认类型为int)
{

    枚举项1=枚举项的值,(枚举项的值是整数可以自己设置)
    枚举项2,
    枚举项3
    
}

例如:

    public enum month : ushort
    { 
        一月,
        二月,
        三月=1000,
        四月
    }

需要注意:

1.枚举可以是任何数字数据类型,例如 byte,sbyte,short,ushort,int,uint,long 或 ulong。但是,枚举不能为字符串类型。

2.枚举项的值默认是从0开始,每一项后加一,若其中有一项给定值,后续的项是在该值上继续加一,如上图中一月为0,二月为1,三月给定值为1000,四月则为在其基础上加一为1001。

3.枚举中每一项的数据类型为枚举名称,例如一月的类型enumtype为month。

二、枚举类型中常用的方法

1、Getvales

该方法是获取枚举中各枚举项组成的数组,数组中数据类型为枚举类型(enumtype)。

  Console.WriteLine(typeof(month));
  foreach (month item in Enum.GetValues(typeof(month)))
  {        
     Console.WriteLine((int)item);
  }

输出结果为:

0
1
1000
1001

枚举类型是枚举项名称+枚举项的值

其中item为month为枚举类型名称,item为枚举类型中的每一项其数据类型仍为month,需要注意的是item的类型不能用Var推断类型定义,否则无法转为int输出枚举项的值。

简单介绍:

扫描二维码关注公众号,回复: 15331065 查看本文章

typeof:获取类型的位置,typeof(month)则为month命名空间下的位置,我们可以获得类型的名称,即名称空间名称,不适用于变量或实例,对于变量名称的获取可以用gettype()。

2、Getnames

该方法是获取枚举中各枚举项名称组成的数组,其数据类型是string类型。

foreach (var item in Enum.GetNames(typeof(month)))
{
   Console.WriteLine(item);
}

其输出结果为:

一月
二月
三月
四月

该方法与getvalues的最大不同是返回数组的数据类型不同,该类型是string,getvales返回的是枚举类型。

3、IsDefined

该方法是确定枚举项中有没有某个枚举项名称,如果存在则输出true,否则为false。

Console.WriteLine(Enum.IsDefined(typeof(month), "abc"));
Console.WriteLine(Enum.IsDefined(typeof(month), "三月"));

输出结果为:

false
true

4、Parse

用某个字符串代替枚举中某枚举项。

 month k= (month)Enum.Parse(typeof(month),"三月");
 Console.WriteLine((int)k);

定义一个枚举类型实例K,将枚举项三月值传递给k;

输出结果为:

1000

三、总结

枚举其实是自己定义一种类型,该种类型是枚举项+数字的组合。

枚举的名称是string,值为int;

枚举类型可以和int类型强制转换,如何输出是枚举类型,则输出结果为string,即为枚举项的名称,如何强制转为int类型,则输出的为枚举项的值。

完整代码:

using System;
namespace test
{
    //创建枚举类型
    public enum month : ushort
    { 
        一月,
        二月,
        三月=1000,
        四月
    }
    public class qiao
    {
        static void Main(string[] args)
        {
            var a = ((int)month.四月);
            string m = "三月";
            month k= (month)Enum.Parse(typeof(month),m);
            Console.WriteLine((int)k);
            Console.WriteLine(Enum.IsDefined(typeof(month), "abc"));
            Console.WriteLine(Enum.IsDefined(typeof(month), m));
            Console.WriteLine(Enum.IsDefined(typeof(month), "三月"));

            Console.WriteLine(typeof(month));
            foreach (month item in Enum.GetValues(typeof(month)))
            {        
                Console.WriteLine((int)item);
            }

            foreach (var item in Enum.GetNames(typeof(month)))
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();  
        }


    }

输出结果:

猜你喜欢

转载自blog.csdn.net/qiaodahua/article/details/130933772
今日推荐