目录
枚举
1.分类
1.1普通枚举
1)默认情况
2)指定起始值
1.2标志枚举(Flag Enum)
位运算符与标志枚举
1)组合标志
2)检查标志
2.枚举与不同类型之间的转换
1)枚举->整型
2)整型->枚举
3)枚举->字符串
4)字符串->枚举
本篇文章来分享一下C#的基础知识,主要讲述一下枚举。想要了解数据类型的相关知识的可以查看C#基础知识-.NET,变量,容量单位,数据类型
枚举
一般情况下,可以将枚举理解为用于定义一组命名的整型常量。
1.分类
1.1普通枚举
普通枚举用于列举某种数据的所有取值,可以增强代码的可读性,限定取值。枚举元素默认为int,准许使用的枚举类型有byte,sbyte,short,ushort,int,unit,long或ulong。每个枚举元素都有值,默认情况下,第一个枚举值为0,后续值依次递增,可以修改值。
1)默认情况
默认情况下,第一个枚举值为0,后续值依次递增。
public enum DayOfWeek
{Sunday, // 0Monday, // 1Tuesday, // 2Wednesday, // 3Thursday, // 4Friday, // 5Saturday // 6
}
2)指定起始值
可以通过显式指定某个枚举成员的值来改变默认的顺序。
public enum ErrorCode
{None = 0,NotFound = 404,ServerError = 500
}
1.2标志枚举(Flag Enum)
标志枚举是指用[Flag]特性修饰的枚举,表示可以组合的位标志。通过使用位运算,标志枚举允许使用单个枚举值来表示多个状态。要创建标志枚举,通常会将每个枚举成员的值设置为2的n次方,这样可以确保它们在二进制表示中是互斥的。
位运算符与标志枚举
1)组合标志
选择多个枚举值,按位|(两个对应的二进制位中有一个1,结果位为1),注意任意多个枚举值做|运算的结果不能与其他枚举值相同(值以2的n次方递增)
2)检查标志
判断标志枚举是否包含某个枚举值,按位&(两个对应的二进制位中都为1,结果位为1)
using System;
using UnityEngine;public class Test : MonoBehaviour
{[Flags]public enum PersonStyle{tall = 1, //00000001rich = 2, //00000010handsome = 4, //00000100white = 8, //00001000beautiful = 16//00010000}private void Start(){//选择多个枚举PersonStyle person = PersonStyle.tall | PersonStyle.rich | PersonStyle.handsome;Debug.Log(person);PersonStyle style = PersonStyle.white | PersonStyle.rich | PersonStyle.beautiful;PrintPersonStyle(style);}private static void PrintPersonStyle(PersonStyle style){//判断是否包含if ((style & PersonStyle.tall) == PersonStyle.tall){Debug.Log("高");}if ((style & PersonStyle.rich) == PersonStyle.rich){Debug.Log("富");}if ((style & PersonStyle.handsome) == PersonStyle.handsome){Debug.Log("帅");}if ((style & PersonStyle.white) != 0){Debug.Log("白");}if (style.HasFlag(PersonStyle.beautiful)){Debug.Log("美");}}
}
总结:
1)普通枚举:用于表示一组相关的常量,默认从0开始递增。
2)标志枚举:用于表示可以组合的位标志,允许使用位运算来组合和检查多个状态。通常使用 [Flags] 特性标记以表明该枚举是一个标志枚举。
2.枚举与不同类型之间的转换
1)枚举->整型
PersonStyle tall = PersonStyle.tall;
int intValue = (int)value;
2)整型->枚举
int intValue = 1;
PersonStyle value = (PersonStyle)intValue;
3)枚举->字符串
string stringValue = value.ToString();
4)字符串->枚举
PersonStyle enumValue = (PersonStyle)Enum.Parse(typeof(PersonStyle), "tall");
好了,本次的分享到这里就结束啦,希望对你有所帮助~