c# enum 和 switch

本文详细探讨了C#中的枚举类型(enum)及其在编程中的应用,包括如何声明和使用枚举,以及枚举与switch语句的结合使用。同时,分析了switch语句的工作原理和最佳实践,帮助开发者更好地理解和掌握这两种重要的C#特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

namespace ConsoleApp1
{
   
    class Program
    {
   
        static void Main(string[] args)
        {
   
            Level level = Level.Hight;
            switch (level
### C# 中枚举 (Enum) 的基本概念 在 C# 中,`enum` 是一种特殊的数据类型,用于定义一组命名的常量。通过使用 `enum`,可以提高代码的可读性维护性,因为它们允许开发者以更具描述性的名称来表示整数值。 #### 枚举的基础语法 以下是创建使用枚举的一个简单例子: ```csharp // 定义一个名为 Color 的枚举 public enum Color { Red, Green, Blue } ``` 默认情况下,第一个成员被赋值为 0,后续成员依次递增[^1]。因此,在上述示例中: - `Color.Red` 对应于值 0, - `Color.Green` 对应于值 1, - `Color.Blue` 对应于值 2。 如果需要指定自定义值,则可以通过显式赋值实现: ```csharp public enum DaysOfWeek : byte { Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6, Sunday = 7 } ``` 在此处,`DaysOfWeek` 被声明为字节类型 (`byte`) 并赋予特定值。 #### 使用枚举 一旦定义好了一个枚举类型,就可以像其他任何数据类型一样对其进行操作。下面是一个简单的程序片段展示如何利用前面提到的颜色枚举: ```csharp class Program { static void Main() { Color selectedColor = Color.Green; switch(selectedColor) { case Color.Red: Console.WriteLine("The color is red."); break; case Color.Green: Console.WriteLine("The color is green."); // 输出此句 break; default: Console.WriteLine("Unknown color"); break; } int valueOfGreen = (int)selectedColor; // 显式转换成整数 Console.WriteLine($"Value of Green as integer: {valueOfGreen}"); string nameOfColor = Enum.GetName(typeof(Color), selectedColor); Console.WriteLine($"Name of the current color: {nameOfColor}"); Console.ReadKey(); } } ``` 这段代码展示了几个重要的特性:switch-case 结构可以直接比较枚举变量;也可以将枚举值强制转换为其基础整型形式;还可以借助反射机制获取某个具体枚举项的名字字符串。 #### 枚举与标志位(Flags) 有时我们需要组合多个选项在一起形成复合状态,这正是 `[Flags]` 属性发挥作用的地方。它使得单个字段能够存储多选设置的信息集合。 ```csharp [Flags] public enum Permissions { None = 0b0000, Read = 0b0001, Write = 0b0010, Execute = 0b0100, All = 0b0111 } static void Main(string[] args) { var permissionSet = Permissions.Read | Permissions.Execute; if ((permissionSet & Permissions.Read) != 0) Console.WriteLine("Read access granted."); if (!permissionSet.HasFlag(Permissions.Write)) Console.WriteLine("Write not allowed."); foreach(var perm in Enum.GetValues(typeof(Permissions))) Console.WriteLine(((Permissions)perm).ToString()); } ``` 这里演示了如何运用按位逻辑运算符构建权限集以及测试是否存在某一项许可权能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值