C# 循环枚举

本文详细介绍了如何使用C#中的枚举类型,包括定义枚举类型MemberTypeEnum及其成员销售、服务和策划,以及如何通过Enum类的方法GetValues和GetName来遍历并获取枚举的名称和值。

public enum MemberTypeEnum
        {
            /// <summary>
            /// 销售
            /// </summary>
            销售 = 1,
            /// <summary>
            /// 服务
            /// </summary>
            服务 = 2,
            /// <summary>
            /// 策划
            /// </summary>
            策划 = 3
        }

 

foreach (int myCode in Enum.GetValues(typeof(MemberTypeEnum)))
            {
                string strName = Enum.GetName(typeof(MemberTypeEnum), myCode);//获取名称
                string strVaule = myCode.ToString();//获取值
                WriteLine(strName);
                WriteLine(strVaule);
            }

 

结果:

 

### C#枚举的定义与使用 #### 1. 枚举的基本概念 枚举(`enum`)在C#中是一种特殊的数据类型,用于定义一组命名常量。通过使用枚举,可以使代码更具可读性和可维护性[^4]。枚举通常用来表示有限数量的状态或选项。 #### 2. 枚举的定义方式 枚举类型的定义使用 `enum` 关键字完成。下面展示了一个简单的枚举定义示例: ```csharp public enum DaysOfWeek { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } ``` 在此示例中,`DaysOfWeek` 是一个枚举类型,包含了七天的名字作为其成员。如果没有显式赋值,则第一个成员会被赋予值 `0`,后续成员依次递增[^5]。 如果需要为特定成员设置具体数值,也可以手动指定: ```csharp public enum StatusCodes { Success = 200, NotFound = 404, ServerError = 500 } ``` 这种做法有助于将HTTP状态码这样的标准协议集成到应用程序逻辑之中。 #### 3. 枚举的基础操作 ##### (1) 获取枚举项的数量 要计算枚举中定义了多少个项目,可以借助反射机制中的 `Enum.GetNames()` 或者 `Enum.GetValues()` 方法实现: ```csharp int count = Enum.GetNames(typeof(DaysOfWeek)).Length; Console.WriteLine($"Total days: {count}"); ``` 这段代码会输出一周总共有多少天的信息[^1]。 ##### (2) 遍历所有枚举成员 可以通过循环访问所有的枚举成员及其对应值: ```csharp foreach (var day in Enum.GetValues(typeof(DaysOfWeek))) { Console.WriteLine($"{day}: {(int)day}"); } ``` 这将打印出每个星期几以及它的整数表现形式。 ##### (3) 字符串转换成枚举 有时需要把字符串转化为相应的枚举类型实例,这时可以调用 `Enum.Parse` 函数或者更安全地尝试解析的方法 `Enum.TryParse`: ```csharp string inputDay = "Monday"; if(Enum.TryParse(inputDay, out DaysOfWeek result)){ Console.WriteLine(result); }else{ Console.WriteLine("Invalid Day"); } ``` 以上代码片段实现了从用户输入的一个字符串判断是否能成功匹配到预设好的某一天,并作出相应反馈[^2]。 #### 4. 进阶主题 - 标志枚举 当多个标志可以同时存在时,可以创建所谓的“标志”枚举。为此需加上 `[Flags]` 属性修饰该枚举,并确保各个标记之间互不干扰(通常是2次幂关系),例如: ```csharp [Flags] public enum Permissions { None = 0x0, Read = 0x1, Write = 0x2, Execute = 0x4, All = Read | Write | Execute } Permissions permissionSet = Permissions.Read | Permissions.Execute; bool canRead = (permissionSet & Permissions.Read) == Permissions.Read; ``` 在这里,我们不仅定义了一组权限级别,而且还能轻松检查某个集合是否具备某种能力[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值