我们知道在默认情况下,第一个枚举数的值为0,后面每个枚举数的值一次加1.

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

  我们也可以用初始值来重写默认值。

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

  这样元素的序列就从1开始而不是0。

  每种枚举类型都有基础类型,该类型可以是除了char以外的任何整形。

enum Days : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

  准许使用的枚举类型有 byte、sbyte、short、ushort、int、uint、long 或 ulong。

接着我们来讲本节的中单,在Enum上声明FlagsAttribute特性,他能让枚举能参与二进制的与或运算。

具体我们来看代码:

sing UnityEngine;
using System.Collections;
using System;
[Flags]
public enum LogLevel1
{ NONE = 0, DEBUG = 1, INFO = 2, WARNING = 4, ERROR = 8, EXCEPT = 16, CRITICAL = 32,
}
public class test : MonoBehaviour { public static LogLevel1 loglevel = LogLevel1.DEBUG | LogLevel1.INFO | LogLevel1.WARNING | LogLevel1.ERROR | LogLevel1.CRITICAL | LogLevel1.EXCEPT;
// Use this for initialization
void Start () {
print(loglevel);//打印LogLevel1.DEBUG | LogLevel1.INFO | LogLevel1.WARNING | LogLevel1.ERROR | LogLevel1.CRITICAL | LogLevel1.EXCEPT全部枚举
print(loglevel & LogLevel1.DEBUG);//打印LogLevel1.DEBUG枚举
if (LogLevel1.DEBUG == (loglevel & LogLevel1.DEBUG))
{
print(loglevel);//还是打印全部枚举类型
          }
} // Update is called once per frame
void Update () { }
}

  这里我是在Unity里面测试的,可以看到|和&的位运算符可以操作枚举类型,并且发现if (LogLevel1.DEBUG == (loglevel & LogLevel1.DEBUG))这句代码的作用是

判断enum里面是否包含debug这个枚举

C#之Enum中的Flag的更多相关文章

  1. 在WCF中使用Flag Enumerations

      请看MSDN示例: [DataContract][Flags] public enum CarFeatures {     None = 0,     [EnumMember]     AirCo ...

  2. Android源码中的FLAG为何使用16进制

    1.在阅读源码的时候经常发现有一些标志属性使用一些位操作来判断是否具有该标志,增加标志或者去除标志. 比如View.java中的 /** * This view does not want keyst ...

  3. (转)JavaMail中的Flag(邮件状态)

    本文转载自:http://blog.csdn.net/chjttony/article/details/6005594 标记邮件就是把邮件标记为已读,删除等操作,需要使用Flags类,它mail.ja ...

  4. .Net反射-两种方式获取Enum中的值

    public enum EJobType { 客服 = , 业务员 = , 财务 = , 经理 = } Type jobType = typeof(EJobType); 方式1: Array enum ...

  5. springmvc中select可以绑定enum中所有数据的方法

    public enum States { AK("AK"), AL("AL"), AR("AR"), AZ("AZ"), ...

  6. 位运算和enum中的位运算

    1.位逻辑非运算 ~ 位逻辑非运算是单目的,只有一个运算对象.位逻辑非运算按位对运算对象的值进行非运算,即:如果某一位等于0,就将其转变为1:如果某一位等于1,就将其转变为0. 比如,对二进制的100 ...

  7. [Swift通天遁地]一、超级工具-(1)动态标签:给UILabel文字中的Flag和url添加点击事件

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  8. nginx中rewrite flag

    rewrite  正则表达式  新URI  [flag]; [flag] 选项用于调控重写的行为,它的取值可能是: last:重写完成后,会停止继续处理当前区块所有属于ngx_http_rewrite ...

  9. MYSQL中 ENUM 类型

    MYSQL中 ENUM 类型的详细解释 ENUM类型 ENUM 是一个字符串对象,其值通常选自一个允许值列表中,该列表在表创建时的列规格说明中被明确地列举. 在下列某些情况下,值也可以是空串(&quo ...

随机推荐

  1. JQuery实现AJAX实例

    <script type="text/javascript" src="ReportServer?op=emb&resource=finereport.js ...

  2. spring使用aop需要的jar包,和常见异常

    3.0以后spring不再一起发布aop依赖包,需要自己导入: 必须包: 这几个jar包分别为 1.org.springframework.aop-3.1.1.RELEASE  这个是spring的 ...

  3. Developer Express控件gridcontrol中gridView的某一个单元格是否可以自由输入

    场景:在Developer Express控件gridcontrol中的gridView中,当医生开的临时医嘱的医嘱类型为"中草药","计价总量"单元格不可以自 ...

  4. MVC - 12.HtmlHelper

    1.动态生成URL @Url.Action("Index3","Stu3") @Url.RouteUrl("Default2", new { ...

  5. poj2104 主席树 区间K大 在线 无修改

    关于主席树: 主席树(Chairman Tree)是一种离线数据结构,使用函数式线段树维护每一时刻离散之后的数字出现的次数,由于各历史版本的线段树结构一致,可以相减得出区间信息,即该区间内出现的数字和 ...

  6. Linux让程序后台运行命令之screen与nohup

    一.nohup nohup时间长了会断掉  所以建议使用screen nohup 命令 & 如果运行成功刚默认会将标准输出重定向到当前目录的nohup.out文件中,查看此文件,可以了解运行的 ...

  7. 【转】python 之 collections

    转自:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0014110312394 ...

  8. 转:nginx+CGI/FASTCGI

    简介版: 1.fastcgi与cgi区别:fastcgi通过线程来响应请求,而cgi对每个请求生成一个进程. 2.典型nginx数据传输过程:user->nginx->本地socket(请 ...

  9. phpstorm中Xdebug的使用

    目 录 1.Xdebug简介 2.Xdebug的安装.操作   2.1环境搭建 2.2配置php.ini 2.3配置PhpStorm 2.4配置PHP Debug 2.5进行调试 1.Xdebug简介 ...

  10. 循序渐进PYTHON3(十三) --3-- DJANGO之FORM表单(为自动生成的HTML标签添加样式)

    views.py from django.shortcuts import render,HttpResponse from django import forms import json impor ...