前言:本博文主要对Enum知识,作一些补充,主要是类型转换这块。更多知识,请查看本人另一篇博文:C# 枚举(Enum)精讲
一、Enum介绍
Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型。如果没有显式声明基础类型,则使用 Int32。编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举。
注意:枚举类型的基类型是除 Char 外的任何整型,所以枚举类型的值是整型值。
二、声明一个Enum类型
// 声明一个枚举,表示性别,里面有两个值
// Pascal命名规则
enum Sex
{
male, // 男
Female, // 女
// 最后一个, 可有可无
}
三、Enum,Int,String相互转换
1、Enum转String或String[]
- 利用Object.ToString()方法。
Sex sex1 = Sex.male;
string strSex = sex1.ToString();
Console.WriteLine(strSex);
// 判断是否转换成功
Console.WriteLine(strSex is String);
- 利用Enum的静态方法GetName与GetNames。
string strSex = Enum.GetName(typeof(Sex),Sex.male);
Console.WriteLine(strSex);
Console.WriteLine(strSex is String);
string[] strSex = Enum.GetNames(typeof(Sex));
Console.WriteLine(strSex);
Console.WriteLine(strSex is String[]);
2、String转Enum
- 利用Enum的静态方法Parse。
string str = "Female";
Sex sex = (Sex)Enum.Parse(typeof(Sex), str);
Console.WriteLine(sex);
Console.WriteLine(sex is Enum);
3、Enum转Int
- 因为枚举的基类型是除 Char 外的整型,所以可以进行强制转换。
int num = (int)Sex.Female;
Console.WriteLine(num);
Console.WriteLine(num is Int32);
4、Int转Enum
- 可以强制转换将整型转换成枚举类型。
Sex sex = (Sex)1;
Console.WriteLine(sex);
Console.WriteLine(sex is Enum);
- 利用Enum的静态方法ToObject。
Sex sex = (Sex)Enum.ToObject(typeof(Sex), 0);
Console.WriteLine(sex);
Console.WriteLine(sex is Enum);
四、判断某个整型是否定义在枚举中
Enum.IsDefined
Console.WriteLine(Enum.IsDefined(typeof(Sex), 0));
Console.WriteLine(Enum.IsDefined(typeof(Sex), "Female"));