概念/说明:
- 枚举类型是由一组特定常量构成的一组数据结构,是值类型的一种特殊形式,当需要一个由指定常量集合组成的数据类型时,使用枚举类型。它用于声明一组具有相同性质的常量。
- 枚举是一种整型数据,所以只能继承整型类型,或者不继承,默认是int型。表示枚举元素使用该种类型存储。不同类型占用字节不同。
- 在声明枚举时,枚举成员如果不赋值,那枚举成员的值从0开始,依次加1,如果赋值,给的值是多少就是多少。
- 给申请好的枚举变量赋值,只能赋值成定义的枚举成员,它虽然是一种整型数据,但不能直接赋值成整型常量,但可以赋值成0(表示第一个枚举成员)
- 枚举变量只能做“+”“-”运算,但是运算所得值不等于枚举成员值,则返回所得值的整形数据。
声明/定义:
enum 枚举类型名:基础类型
{枚举成员列表}
示例:
enum Game:byte
{ start,stop}
枚举取值类型:
byte、sbyte、short、ushort、int、uint、long 或 ulong
枚举成员的取值和值得变化:
默认值为0,没有手动赋值的成员都是在上一个枚举的基础上加1,枚举可以为负数,枚举成员不是变量是常量。
示例:
enum Game:byte
{ start=1,stop}
获取枚举内容语法格式:
枚举类型名.枚举成员列表;
示例:
Game.start;
枚举转换字符串:
使用方法ToString();
示例:
string s = Game.start.ToString();
字符串转换枚举:
(枚举类型名)Enum.Parse(typeof(枚举类型名),字符串);
示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test_CSharp
{
class Program
{
enum Game : byte
{ start, stop }
static void Main(string[] args)
{
Game games = (Game)Enum.Parse(typeof(Game), Console.ReadLine());
switch (games)
{
case Game.start: Console.WriteLine("开始"); break;
case Game.stop: Console.WriteLine("结束"); break;
}
Console.ReadKey();
}
}
}
通过值获取标识符
代码示例:
enum game:sbyte
{
游戏未开始, 游戏进行中, 游戏已结束
}
static void Main(string[] args)
{
string s = Enum.GetName(typeof(game), 0);
string[]arr = Enum.GetNames(typeof(game));
Console.WriteLine(s); ---> 游戏未开始
foreach (var item in arr)
{
Console.WriteLine(item);
}
--->
游戏未开始
游戏进行中
游戏已结束
Console.ReadKey();
}