C#之Enum中的Flag
我们知道在默认情况下,第一个枚举数的值为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的更多相关文章
- 在WCF中使用Flag Enumerations
请看MSDN示例: [DataContract][Flags] public enum CarFeatures { None = 0, [EnumMember] AirCo ...
- Android源码中的FLAG为何使用16进制
1.在阅读源码的时候经常发现有一些标志属性使用一些位操作来判断是否具有该标志,增加标志或者去除标志. 比如View.java中的 /** * This view does not want keyst ...
- (转)JavaMail中的Flag(邮件状态)
本文转载自:http://blog.csdn.net/chjttony/article/details/6005594 标记邮件就是把邮件标记为已读,删除等操作,需要使用Flags类,它mail.ja ...
- .Net反射-两种方式获取Enum中的值
public enum EJobType { 客服 = , 业务员 = , 财务 = , 经理 = } Type jobType = typeof(EJobType); 方式1: Array enum ...
- springmvc中select可以绑定enum中所有数据的方法
public enum States { AK("AK"), AL("AL"), AR("AR"), AZ("AZ"), ...
- 位运算和enum中的位运算
1.位逻辑非运算 ~ 位逻辑非运算是单目的,只有一个运算对象.位逻辑非运算按位对运算对象的值进行非运算,即:如果某一位等于0,就将其转变为1:如果某一位等于1,就将其转变为0. 比如,对二进制的100 ...
- [Swift通天遁地]一、超级工具-(1)动态标签:给UILabel文字中的Flag和url添加点击事件
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- nginx中rewrite flag
rewrite 正则表达式 新URI [flag]; [flag] 选项用于调控重写的行为,它的取值可能是: last:重写完成后,会停止继续处理当前区块所有属于ngx_http_rewrite ...
- MYSQL中 ENUM 类型
MYSQL中 ENUM 类型的详细解释 ENUM类型 ENUM 是一个字符串对象,其值通常选自一个允许值列表中,该列表在表创建时的列规格说明中被明确地列举. 在下列某些情况下,值也可以是空串(&quo ...
随机推荐
- 【LabVIEW技巧】策略模式
前言 在之前的文章提到了如何学习OOP以及对应的简单工厂模式,由于时间比较长,我们先回顾一下原有内容,然后继续了解新的模式. 为什么学习OOP 在测控系统的软件开发过程中,LabVIEW工程师一直认为 ...
- mapper.xml中的<sql>标签
原文链接:http://blog.csdn.net/a281246240/article/details/53445547 sql片段标签<sql>:通过该标签可定义能复用的sql语句片段 ...
- [New learn]AutoLayout调查基于IB
代码:https://github.com/xufeng79x/AutoLayout-IB 1.简介 Autolayout旨在解决不同高宽度的屏幕下的显示问题,通过增加给控件增加约束来达到不同屏幕间的 ...
- IE7下面iframe滚动条无法用鼠标轮滚 其他浏览器可以
1.让 IFRAME 隐藏滚动条,通常的做法就是在嵌入 IFRAME 的页面的 CSS 中指定以下规则: html, body {overflow: hidden} 2.如果只是想隐藏横向滚 ...
- 当你用element-ui遇到需要在el-table-column上v-for时,这篇文章你能用的上,也就是你需要二级循环
好链接就要丢过去 https://blog.csdn.net/qq_28929589/article/details/79445354
- hdu 2818(并查集,带权更新)
Building Block Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- DotNetCore 微服务上传附件
后台接口升级成netcore 2.0了,然后之前的上传图片的接口就不再使用了.新的接口形式 #region IFormCollection /// <summary> /// IFormC ...
- 前端读者 | ES6知识点概述
本文来自 @羯瑞 整理 ES6,并不是一个新鲜的东西,ES7.ES8已经赶脚了.但是,东西不在于新,而在于总结. 变量的新定义 let 和 const 在ES6没有被普及时,我们会用的变量定义的方法是 ...
- Java浮点类型的格式化
概述 基于Java,介绍将浮点类型小数进行格式化的方案. 正文 在Java中,用于格式化小数的类是java.text.DecimalFormat,比如你可以这样使用: double data = 33 ...
- 用jquery实现文章自动生成二级目录(续)
前文:用jquery实现文章自动生成二级目录. 使用方法的补充 我们可以把我们的js和css上传到博客园,然后在页面HTML代码中使用他们. 发现的一些问题 在我把我的js放到自己的博客园上运行之后发 ...