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

输出结果:

 

 

相关文章
|
6月前
|
C#
C#学习相关系列之数据类型类的三大特性(二)
C#学习相关系列之数据类型类的三大特性(二)
|
6月前
|
存储 C#
C#数据类型之结构体介绍
C#数据类型之结构体介绍
|
6月前
|
存储 编译器 数据处理
C#基础入门之数据类型
C#基础入门之数据类型
|
6月前
|
存储 C# 图形学
【Unity 3D】C#数据类型和变量、命名规范的讲解(附源码)
【Unity 3D】C#数据类型和变量、命名规范的讲解(附源码)
153 1
|
2月前
|
存储 C# 索引
C# 一分钟浅谈:变量与数据类型简介
【9月更文挑战第1天】在 C# 编程中,了解变量与数据类型至关重要。本文详细介绍了 C# 中的值类型(如整数、浮点数、布尔值等)和引用类型(如类、接口、数组、字符串)。通过示例代码展示了变量的声明与使用方法,并针对数据类型转换错误、变量未初始化及数值溢出等常见问题提供了解决方案。正确选择数据类型不仅能提升程序性能,还可避免潜在错误,有助于编写高质量代码。
130 47
|
3月前
|
C#
C# 面向对象编程(三)——接口/枚举类型/泛型
C# 面向对象编程(三)——接口/枚举类型/泛型
35 0
|
3月前
|
Java C#
C# 和 java 基本数据类型
C# 和 java 基本数据类型
22 0
|
5月前
|
存储 C# 开发者
C# 编程基础:注释、变量、常量、数据类型和自定义类型
C# 编程基础:注释、变量、常量、数据类型和自定义类型
|
5月前
|
开发框架 .NET 程序员
掌握C#语言的精髓:基础知识与实用技能详解(数据类型与变量+ 条件与循环+函数与模块+LINQ+异常+OOP)
掌握C#语言的精髓:基础知识与实用技能详解(数据类型与变量+ 条件与循环+函数与模块+LINQ+异常+OOP)
33 0
|
6月前
|
存储 C#
深入C#数据类型
深入C#数据类型