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这个枚举

  • 相关阅读:
    OSError: Initializing from file failed
    python之邮件提醒
    python之经纬度的获取
    Pandas写入CSV格式
    代码不同之处高亮显示
    Python之免费随机代理IP的获取以及使用
    正则之利用元素属性进行匹配
    时间戳的格式化
    简单实用的HTML中字符串的提取
    承接OpenCV Halcon视觉项目开发定制
  • 原文地址:https://www.cnblogs.com/CaomaoUnity3d/p/4633979.html
Copyright © 2011-2022 走看看