c#的枚举

复制代码
public enum StatusCode
{
    OK = 200,         // 自定义值
    NotFound = 404,   // 自定义值
    Unauthorized = 401, // 自定义值
    Forbidden = 403   // 自定义值
}

(int)StatusCode.OK

(StatusCode)404

枚举常用方法

  • Enum.GetValues(Type):返回枚举类型的所有值。
  • Enum.GetNames(Type):返回枚举类型的所有成员名称。
  • Enum.IsDefined(Type, Object):检查指定的值是否是枚举类型中的有效值。


枚举与位标志

  • Read = 1 (二进制 0001)
  • Write = 2 (二进制 0010)
  • Execute = 4 (二进制 0100)
  • Delete = 8 (二进制 1000)

    using System;

    [Flags] // 指示这是一个位标志枚举
    public enum Permissions
    {
    None = 0, // 0,表示没有任何权限
    Read = 1, // 1,表示读取权限
    Write = 2, // 2,表示写入权限
    Execute = 4, // 4,表示执行权限
    Delete = 8 // 8,表示删除权限
    }

    public class Program
    {
    public static void Main()
    {
    // 用户具有读取和写入权限(Read | Write)
    Permissions userPermissions = Permissions.Read | Permissions.Write;

    // 输出当前权限的二进制表示
    Console.WriteLine(userPermissions); // 输出 Read, Write

    // 判断用户是否具有执行权限
    bool hasExecutePermission = (userPermissions & Permissions.Execute) == Permissions.Execute;
    Console.WriteLine($"User has execute permission: {hasExecutePermission}"); // 输出 False

    // 启用删除权限
    userPermissions |= Permissions.Delete; // 使用按位或操作符

    // 输出更新后的权限
    Console.WriteLine(userPermissions); // 输出 Read, Write, Delete

    // 禁用写入权限
    userPermissions &= ~Permissions.Write; // 使用按位非操作符清除写入权限

    // 输出更新后的权限
    Console.WriteLine(userPermissions); // 输出 Read, Delete
    }
    }

    解释:

    • Permissions 枚举中,每个权限对应一个二进制位(Read = 1Write = 2Execute = 4Delete = 8)。
    • 通过位运算符 |(按位或),我们可以将多个权限组合成一个权限集。例如,Read | Write 会组合成一个用户既有读取权限,又有写入权限。
    • 使用 &(按位与)运算符可以检查某个权限是否存在。如果 userPermissions & Permissions.Execute 的结果是 Permissions.Execute,表示用户具有执行权限。
    • 使用 &= ~Permissions.Write 可以禁用写入权限,~ 操作符用于反转位(清除写入权限位)。

    位标志的优点

    1. 内存高效:所有的标志可以存储在一个整数中,例如一个 int 类型的变量。通常一个 int 有 32 位,因此最多可以表示 32 个标志。
    2. 快速操作:位运算非常高效,尤其是在需要频繁检查或修改多个标志时。
    3. 便于组合和清除:通过简单的按位运算,你可以轻松地组合多个状态,或者清除某个特定的状态。
    4. 扩展性强:位标志能够很好地扩展。当你需要新增权限或选项时,只需要分配一个新的二进制位,不会影响原有的标志位。

    总结

    • 位标志是通过二进制位来表示多个独立的选项或状态,并使用位运算符(如按位与、按位或、按位异或等)来对其进行组合、清除、切换等操作。
    • 位标志常用于权限控制、状态管理、设置选项等场景,具有高效、节省内存等优点。
    • 通过 Flags 特性,C# 中的枚举可以很方便地作为位标志使用。

    位标志提供了强大的功能,尤其在涉及到多个选项或状态的场景中,它是非常有用且高效的。

复制代码

 

posted @   爱晒太阳的懒猫。。  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示