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 ...
随机推荐
- VPS性能综合测试(7):服务器压力测试,VPS系统负载测试
1.可能有的VPS主机使用性能测评工具得出的结果很优秀,但是最终运用到实际生产时却发现VPS主机根本无法承受理论上应该达到的流量压力,这时我们就不得不要怀疑VPS商是不是对VPS主机的参数进行了“篡改 ...
- CSS中cursor属性给标签加上小手形状
HTML/CSS 2012-08-10 CSS,标签 我们发现a标签在网页中有一个值得注意的地方,即鼠标移到a标签上光标会变成一只小手的图标,移出a标签后又恢复为默认箭头. 如今,JS在网页中的功能越 ...
- [PAT] 1144 The Missing Number(20 分)
1144 The Missing Number(20 分) Given N integers, you are supposed to find the smallest positive integ ...
- mybatis官网学习
javaType:一个 Java 类的完全限定名,或一个类型别名(参考上面内建类型别名 的列表) .如果你映射到一个 JavaBean,MyBatis 通常可以断定类型. 然而,如果你映射到的是 Ha ...
- centos安装更新Python2.7以及pip的安装
一.首先对相关的软件进行更新 python -V yum -y update yum groupinstall -y development yum install -y zlib zlib-dev ...
- Mysql 中的Text字段的范围
mysql中text 最大长度为65,535(2的16次方–1)字符的TEXT列.如果你觉得text长度不够,可以选择 MEDIUMTEXT最大长度为16,777,215. LONGTEXT最大长度为 ...
- “无法在web服务器上启动调试,不是Debugger User组成员..."
在使用VS.net2003开发asp.net项目时,有时候在你调试项目时,会提示”无法在web服务器上启动调试,不是Debugger User组成员..."这样一个错误信息.很是让人头疼,一 ...
- 用ab进行POST,GET压力测试,且定义header及json的内容
这个以前没作过,找了文档.搞定. 要求时间的单curl测试的方式如下: time curl http://xxxxx/hq/restapi/isStart curl用来用post请求,且有header ...
- Java学习笔记(一)——关于java中的String类
[前面的话] 毕业将近6个月了,试用期也快要过去了,期待接下来的日子.在金融类性质的机构,最痛苦的是也许就是大部分系统外包,所以比较少写代码,在这六个月中只写了1个月左右的代码,然后每天都在做一些比较 ...
- AC日记——Power收集 洛谷 P3800
Power收集 思路: 单调队列优化dp: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 4005 stru ...