zoukankan      html  css  js  c++  java
  • 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这个枚举

  • 相关阅读:
    使用Wireshark捕捉USB通信数据
    simtrace之探秘SIM卡中的世界
    极客DIY:RFID飞贼打造一款远距离渗透利器
    C118+Osmocom-bb+Openbts搭建小型基站
    天猫标的就是虚价,果然败家节啊
    为什么项目的jar包会和tomcat的jar包冲突?
    Spring-JDBC实现Contact的CRUD
    使用maven下载jar包的source和javadoc
    Spring-Context的注解实现依赖注入功能
    [html]三列居中自动伸缩的结构
  • 原文地址:https://www.cnblogs.com/CaomaoUnity3d/p/4633979.html
Copyright © 2011-2022 走看看