C#教程(五):枚举

1、什么是枚举

枚举(Enum)是一种用于定义命名常量集合的数据类型。它允许开发人员创建一个命名的整数常量集合,这些常量可以在代码中代表特定的值。

2、示例

以下是一个简单的枚举示例:

c 复制代码
// 定义一个枚举类型
enum DaysOfWeek
{
    Sunday,    // 默认值为0
    Monday,    // 默认值为1
    Tuesday,   // 默认值为2
    Wednesday, // 默认值为3
    Thursday,  // 默认值为4
    Friday,    // 默认值为5
    Saturday   // 默认值为6
}

在上面的示例中,DaysOfWeek 枚举定义了一周中的每一天,并且每个枚举值都有一个默认的整数值,从0开始递增。

使用枚举时可以这样赋值和访问:

c 复制代码
DaysOfWeek today = DaysOfWeek.Friday; // 赋值一个枚举值给变量
Console.WriteLine(today); // 输出:Friday

int dayValue = (int)DaysOfWeek.Wednesday; // 获取枚举值的整数表示
Console.WriteLine(dayValue); // 输出:3

3、注意

  • 默认情况下,枚举的第一个元素的值为0,后续元素的值依次递增。
  • 可以将枚举值强制转换为整数类型,也可以将整数类型强制转换为枚举值。
  • 枚举是值类型,可以作为方法的参数和返回值。
  • 可以使用 Enum.Parse 方法将字符串转换为枚举值,或使用 Enum.GetNameEnum.GetNames 获取枚举的名称和名称列表。

Enum.Parse的用法

c 复制代码
string input = "Wednesday";
DaysOfWeek day;

// 将字符串转换为枚举值
if (Enum.TryParse(input, out day))
{
    Console.WriteLine($"今天是: {day}");
}
else
{
    Console.WriteLine("星期八");
}

如果输入字符串与枚举中的任何一个值匹配,Enum.Parse 将返回相应的枚举值。在这个示例中,如果输入字符串是 Wednesday,它将被解析为 DaysOfWeek.Wednesday

Enum.GetName的用法

c 复制代码
// 获取枚举值的名称
            string dayName = Enum.GetName(typeof(DaysOfWeek), 3); // 传入枚举类型和整数值
            Console.WriteLine(dayName); // 输出:Wednesday

EnumGetNames的用法

c 复制代码
// 获取枚举类型的所有名称
            string[] allDays = Enum.GetNames(typeof(DaysOfWeek)); // 传入枚举类型,返回包含所有名称的数组
            foreach (var day in allDays)
            {
                Console.WriteLine(day);
            }

输出结果

枚举类型在编程中常用于提高代码的可读性和维护性,特别是当需要使用一组相关的常量时,使用枚举可以使代码更具有表现力和清晰度。

相关推荐
武昌库里写JAVA4 分钟前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
ZSYP-S40 分钟前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
yuanbenshidiaos43 分钟前
c++------------------函数
开发语言·c++
程序员_三木1 小时前
Three.js入门-Raycaster鼠标拾取详解与应用
开发语言·javascript·计算机外设·webgl·three.js
是小崔啊1 小时前
开源轮子 - EasyExcel01(核心api)
java·开发语言·开源·excel·阿里巴巴
tianmu_sama1 小时前
[Effective C++]条款38-39 复合和private继承
开发语言·c++
黄公子学安全1 小时前
Java的基础概念(一)
java·开发语言·python
liwulin05061 小时前
【JAVA】Tesseract-OCR截图屏幕指定区域识别0.4.2
java·开发语言·ocr
jackiendsc1 小时前
Java的垃圾回收机制介绍、工作原理、算法及分析调优
java·开发语言·算法
Oneforlove_twoforjob1 小时前
【Java基础面试题027】Java的StringBuilder是怎么实现的?
java·开发语言