当前位置: 首页 > article >正文

C#枚举实战:定义、使用及高级特性解析

在C#中,枚举(enum)是一种特殊的数据类型,用于定义一组命名的常量。使用枚举可以使代码更具可读性和可维护性。下面是一个如何在C#中实现并使用枚举的示例。

1. 定义枚举

首先,需要定义一个枚举类型。假设我们要定义一个表示一周中各天的枚举:

public enum DayOfWeek
{
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
}

2. 使用枚举

一旦定义了枚举,可以在代码中使用它。以下是一些使用枚举的示例:

示例1:声明枚举变量
class Program
{
    static void Main(string[] args)
    {
        DayOfWeek today = DayOfWeek.Wednesday;
        Console.WriteLine("Today is " + today);
    }
}

输出:

Today is Wednesday
示例2:在switch语句中使用枚举
class Program
{
    static void Main(string[] args)
    {
        DayOfWeek today = DayOfWeek.Friday;

        switch (today)
        {
            case DayOfWeek.Sunday:
                Console.WriteLine("Today is Sunday.");
                break;
            case DayOfWeek.Monday:
                Console.WriteLine("Today is Monday.");
                break;
            // 其他情况...
            case DayOfWeek.Friday:
                Console.WriteLine("Today is the end of the work week!");
                break;
            default:
                Console.WriteLine("It's just another day.");
                break;
        }
    }
}

输出:

Today is the end of the work week!
示例3:在方法参数中使用枚举
class Program
{
    static void PrintDay(DayOfWeek day)
    {
        Console.WriteLine("The day is " + day);
    }

    static void Main(string[] args)
    {
        PrintDay(DayOfWeek.Tuesday);
    }
}

输出:

The day is Tuesday

3. 枚举的附加特性

还可以为枚举成员指定显式值,这样它们就不必是默认的整数递增序列了:

public enum Month
{
    January = 1,
    February = 2,
    March = 3,
    // ...
    December = 12
}

或者使用位标志(flags)枚举来表示可以组合的值:

[Flags]
public enum FileAccess
{
    Read = 1,
    Write = 2,
    Execute = 4,
    ReadWrite = Read | Write
}

使用位标志枚举时,可以使用按位运算符来组合和检查值:

class Program
{
    static void Main(string[] args)
    {
        FileAccess access = FileAccess.Read | FileAccess.Write;

        if ((access & FileAccess.Read) == FileAccess.Read)
        {
            Console.WriteLine("Read access granted.");
        }

        if ((access & FileAccess.Write) == FileAccess.Write)
        {
            Console.WriteLine("Write access granted.");
        }
    }
}

输出:

Read access granted.
Write access granted.

http://www.kler.cn/a/382821.html

相关文章:

  • Transformer模型中,Encoder(编码器)和Decoder(解码器)
  • 基于单片机的农业自动灌溉系统
  • 人工智能之人脸识别(人脸采集人脸识别)
  • 应对传统能源企业管理人员青黄不接问题:搭建系统完善的招聘管理体系
  • 【MySQL】深度学习与解析 : 库的操作知识整合
  • watch与computed的区别、运用的场景
  • [ DOS 命令基础 2 ] DOS 命令详解-网络相关命令
  • Qt(openCV的应用)
  • liunx系统介绍
  • 蓝禾,汤臣倍健,三七互娱,得物,顺丰,快手,途游游戏25秋招内推
  • Linux云计算 |【第五阶段】CLOUD-DAY9
  • C#中的集合类及其使用
  • Kafka 之消息并发消费
  • Linux权限解析:用户、组和权限的协同
  • 如何跑通 PHP(web)项目
  • DPDK高性能处理框架VPP
  • 力扣:225 用队列实现栈
  • 【JavaScript】V8,Nodejs 与浏览器
  • 【linux】的爱恨情仇
  • 机器学习—TensorFlow实现
  • C语言必做30道练习题
  • mysql-springboot netty-flink-kafka-spark(paimon)-minio
  • 笔记整理—linux驱动开发部分(8)framebuffer类设备
  • FlinkSql读取外部Mysql和HBase数据库的方法(scala)
  • AI笔筒操作说明及应用场景
  • Rust 图形界面开发——使用 GTK 创建跨平台 GUI