[C#1] 7-枚举

简介: 1.Enum 枚举是定义了一组符号名称和数值对,如下: 1 //byte、sbyte、short、ushort、int、uint、long 或 ulong 2 enum Color : byte //默认是int 3 { 4 Red,//默认赋值为0 5 Yellow,//默认赋值为1 6 Blue,//默认赋值为2 7 } 枚举类型使程序更见容易阅读、编写和维护。

1.Enum

枚举是定义了一组符号名称和数值对,如下:

1 //byte、sbyte、short、ushort、int、uint、long 或 ulong    
2 enum Color : byte //默认是int
3 {
4     Red,//默认赋值为0
5     Yellow,//默认赋值为1
6     Blue,//默认赋值为2
7 }

枚举类型使程序更见容易阅读、编写和维护。每个枚举类型默认继承自 System.Enum,属于值类型,但是枚举不能定义任何方法、属性[本质 也是方法嘛]和事件。实际上枚举被编译时会把其中的每个符号转变为类型的一个常量字段,也就是0,1,2...会被硬编码进去。 而使用这些常量[0,1...]是以定义的字符代替的,以下是IL:

Blue项的IL:

.field public static literal valuetype ConsoleApplication1.Color Blue = uint8(0x02)

注意这个uint8,这个和上面写的Color:byte中的byte对应。这是枚举类型的基础类型每一个枚举都有一个基础类型[只可以是基元类型],C#默认是int。 Enum的静态方法Enum.GetUnderlyingType(Type enumType)返回枚举的基础类型。一些常用的方法:

 1 Color myc = Color.Blue;
 2 //ToString方法的格式化参数
 3 Console.WriteLine(myc.ToString());//"Blue"常规格式
 4 Console.WriteLine(myc.ToString("G"));//"Blue"常规格式
 5 Console.WriteLine(myc.ToString("D"));//"2"十进制格式
 6 Console.WriteLine(myc.ToString("X"));//"02"十六进制格式
 7  
 8 //将一个文本符号转化为枚举类型的实例:
 9 Color c = (Color)Enum.Parse(typeof(Color), "Blue");
10  
11 //返回一个枚举类型的中定义的所有符号:
12 Color[] myColorArray = (Color[])Enum.GetValues(typeof(Color));
13  
14 //返回一个枚举类型中每个符号的字符串形式组成的数据;
15 string[] myStrArray = Enum.GetNames(typeof(Color));
16  
17 //判定指定的一个数值是否位于指定枚举中
18 Console.WriteLine(Enum.IsDefined(typeof(Color),"Green"));//输出False
19 //第二个参数是object类型的,一般是写字符,或者基础类型的数值

2.位标记

System.FlagsAttribute特性,位标记可以是枚举表示一组标记,把上述Color代码改写成如下:

1 [Flags]
2 enum Color : byte
3 {
4     Red = 1,//2的次方...
5     Yellow = 2,
6     Blue = 4,
7 }

[Flags]特性会使得枚举支持&|运算。也会影响ToString方法的输出行为。

Color c = Color.Blue | Color.Yellow;
Console.WriteLine(c);//输出Yellow,Blue
 
//我们并没有定义基础类型值为3的符号
Color c = (Color)Enum.Parse(typeof(Color), "3");
//输出Red,Yellow
Console.WriteLine(c);
作者: Blackheart
目录
相关文章
|
4月前
|
程序员 C#
深入理解 C# 编程:枚举、文件处理、异常处理和数字相加
枚举是一个特殊的“类”,表示一组常量(不可更改/只读变量)。 要创建枚举,请使用 enum 关键字(而不是 class 或 interface),并用逗号分隔枚举项:
40 0
|
10月前
|
C#
【C#视频】常量、枚举、结构体、数组
【C#视频】常量、枚举、结构体、数组
|
10月前
|
存储 C#
C#基础⑥.1——枚举、结构体
枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。也就是一些固定范围的值。
|
10月前
|
存储 C#
C#基础Ⅵ❶-枚举、结构体
C#基础Ⅵ❶-枚举、结构体
|
存储 C# C++
C# 结构体(Struct)、 枚举(Enum)
C# 结构体(Struct) 在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。 结构体是用来代表一个记录。假设您想跟踪图书馆中书的动态。您可能想跟踪每本书的以下属性:
186 0
|
开发框架 .NET C#
c# 枚举之间的转换
c# 枚举之间的转换
142 0
|
存储 C# vr&ar
【100个 Unity小知识点】 | C#中通过 数字int值 获取 枚举Enum 中的数值
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
|
存储 程序员 编译器
☀️ 学会编程入门必备 C# 最基础知识介绍(四)——数组、字符串、结构体、枚举、类
前言👻 数组(Array)💚 声明数组 初始化数组 赋值给数组 访问数组元素 使用 foreach 循环 C# 数组细节 C# 字符串(String)💜 String 类的属性 String 类的方法 结构体(Struct)💙 定义结构体 C# 结构的特点 类 vs 结构 枚举(Enum)💛 声明 enum 变量 实例 类(Class)❤️ 类的定义 成员函数和封装 C# 中的构造函数 C# 中的析构函数 C# 类的静态成员 总结💬
☀️ 学会编程入门必备 C# 最基础知识介绍(四)——数组、字符串、结构体、枚举、类