C#数据类型之枚举类型

简介: 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输出枚举项的值。

 

简单介绍:

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();  
        }
    }

输出结果:

 

 

相关文章
|
2月前
|
C#
C#学习相关系列之数据类型类的三大特性(二)
C#学习相关系列之数据类型类的三大特性(二)
|
2月前
|
存储 C#
C#数据类型之结构体介绍
C#数据类型之结构体介绍
|
2月前
|
存储 编译器 数据处理
C#基础入门之数据类型
C#基础入门之数据类型
|
5月前
|
存储 C# 图形学
【Unity 3D】C#数据类型和变量、命名规范的讲解(附源码)
【Unity 3D】C#数据类型和变量、命名规范的讲解(附源码)
58 1
|
2月前
|
存储 C#
深入C#数据类型
深入C#数据类型
5 0
|
2月前
|
C#
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
|
2月前
|
存储 C# 索引
C#学习相关系列之数据类型类的定义(一)
C#学习相关系列之数据类型类的定义(一)
|
2月前
|
存储 开发框架 .NET
C#学习相关系列之数据类型---Diactionary字典的用法
C#学习相关系列之数据类型---Diactionary字典的用法
|
4月前
|
存储 C#
C# 数据类型与类型转换:包含教程与示例
使用正确的数据类型对应于相应的变量是重要的;这样可以避免错误、节省时间和内存,还会使您的代码更易于维护和阅读。最常见的数据类型有:
30 0
|
10月前
C#-数据类型(dynamic)
C#-数据类型(dynamic)
48 0