zoukankan      html  css  js  c++  java
  • C#枚举中使用Flags特性

    这种用处很大,比如权限、执行状态等,都可以用一个int型保存到数据库中,C#中使用枚举可以处理这个问题。

    复制代码
        [Flags]
    public enum Permission
    {
    create = 1,
    read = 2,
    update = 4,
    delete = 8,
    }
    复制代码

    C#对该类型的操作如下:

    复制代码
                Permission permission = Permission.create | Permission.read | Permission.update | Permission.delete;
    Console.WriteLine("1、枚举创建,并赋值……");
    Console.WriteLine(permission.ToString());
    Console.WriteLine((int)permission);

    permission = (Permission)Enum.Parse(typeof(Permission), "5");
    Console.WriteLine("2、通过数字字符串转换……");
    Console.WriteLine(permission.ToString());
    Console.WriteLine((int)permission);

    permission = (Permission)Enum.Parse(typeof(Permission), "update, delete, read", true);
    Console.WriteLine("3、通过枚举名称字符串转换……");
    Console.WriteLine(permission.ToString());
    Console.WriteLine((int)permission);

    permission = (Permission)7;
    Console.WriteLine("4、直接用数字强制转换……");
    Console.WriteLine(permission.ToString());
    Console.WriteLine((int)permission);

    permission = permission & ~Permission.read;
    Console.WriteLine("5、去掉一个枚举项……");
    Console.WriteLine(permission.ToString());
    Console.WriteLine((int)permission);

    permission = permission|Permission.delete;
    Console.WriteLine("6、加上一个枚举项……");
    Console.WriteLine(permission.ToString());
    Console.WriteLine((int)permission);
    复制代码

    在数据库中判断:

    AND (@permission IS NULL OR @permission=0 OR permission &@permission =@permission)

    上面的sql语句同样可以判断多个权限


    如果认为此文对您有帮助,别忘了支持一下哦!

  • 相关阅读:
    微软外服 AlI In One
    js 循环多次和循环一次的时间的性能对比 All In One
    vue inject All In One
    Excel 表格数据倒置 All In One
    SVG tickets All In One
    OH MY ZSH All In One
    js array for loop performance compare All In One
    mac terminal show You have new mail All In one
    新闻视频 26 制作母版页
    转自牛腩 母版页和相对路径
  • 原文地址:https://www.cnblogs.com/Alex80/p/7682111.html
Copyright © 2011-2022 走看看