语法
[public] enum 枚举名{
值1,
值2,
值3,
...
}
public:访问修饰符,public权限最高,公共的,哪都可访问
enum:声明枚举的关键字
一般将枚举声明到命名空间的下面,类的外面,表示这个命名空间下,所有的类都可以使用这个枚举。
如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo {
//声明一个枚举Gender
public enum Gender {
男,
女
}
class Program {
static void Main(string[] args) {
Gender gender = Gender.男;
Console.WriteLine(gender);
Console.ReadKey();
}
}
}
枚举类型和int类型的相互转换
枚举类型默认是跟int类型相互兼容的,所以可以通过强制类型转换的语法互相转换。
枚举类型转为int类型
如下例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo {
//声明一个枚举Season
public enum Season {
Spring,
Summer,
Autumn,
Winter
}
class Program {
static void Main(string[] args) {
//枚举类型默认可以和int类型相互转换
Console.WriteLine((int)Season.Spring);
Console.WriteLine((int)Season.Summer);
Console.WriteLine((int)Season.Autumn);
Console.WriteLine((int)Season.Winter);
Console.ReadKey();
}
}
}
运行:
当将Spring改为2时Spring=2
,运行结果如下:
当将Spring=2
,Autumn=5
时,运行结果如下:
综上,在枚举中的值转换为int类型时默认是从0开始的,但当给枚举中的某个值赋了int类型的值后,如Spring赋值为2后,其后面的值,在转化为int类型的值时,是从2开始,后面依次加1。
int类型转为枚举类型
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo {
//声明一个枚举Season
public enum Season {
Spring,
Summer,
Autumn,
Winter
}
class Program {
static void Main(string[] args) {
//枚举类型默认可以和int类型相互转换
int number = 2;
Season season = (Season)number;
int number2 = 7;
Season season2 = (Season)number2;
Console.WriteLine("season:"+season);
Console.WriteLine("season2:"+season2);
Console.ReadKey();
}
}
}
运行结果:
当number=2时,转换为枚举的值为Autumn,而当number2=7,输出仍然为7。这是因为7在枚举中没有值相对应,转换不了,所以直接输出原来的数字。
枚举类型与字符串类型的相互转换
枚举类型转为字符串类型
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo {
//声明一个枚举Season
public enum Season {
Spring,
Summer,
Autumn,
Winter
}
class Program {
static void Main(string[] args) {
//所有类型都能调用ToString()转换为string类型
Season season = Season.Spring;
string s = season.ToString();
Console.WriteLine(s);
Console.ReadKey();
}
}
}
运行结果:
字符串类型转化为枚举类型
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo {
//声明一个枚举Season
public enum Season {
Spring,
Summer,
Autumn,
Winter
}
class Program {
static void Main(string[] args) {
string s = "0";
Season season=(Season)Enum.Parse(typeof(Season), s);
Console.WriteLine(season);
Console.ReadKey();
}
}
}
运行结果:
当转换的字符串是数字时,就算枚举中没有,也不会抛异常,而会直接显示出数字。当转换的字符串是文本时,如果枚举中没有,则会抛出异常。