在使用枚举类型时候,什么时候获取的是枚举变量,什么时候获取的是枚举值?也就是如何获取字符描述或者对应的数值。
结论:
1.使用 枚举变量.GetHashCode() 方法可以获取枚举值,即数值。
2.对枚举变量直接打印,得到的是字符描述信息。
3.创建枚举变量时候,如果没有用枚举成员赋值对其赋值时,有两种情况:
a.枚举值定义不从0开始,得到的枚举变量的值是0,得到的字符描述也是0;
b. 枚举值定义从0开始,得到的枚举变量的值是0,得到的字符描述是0所对应的描述信息。
代码如下:
/*------------------------------------------------------------
// 文件名:枚举.cs
// 文件功能描述:枚举
//
// 创建时间:Administrator 2021/2/21 星期日 下午 4:37
// 修改描述:验证枚举类型如何获取枚举类中的成员枚举值,以及如何获取枚举类中的成员,也就是字符和数值如何获取
//------------------------------------------------------------*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 验证
{
class 枚举
{
public enum OperateData
{
//Mod = 0, //有无这行代码将影响未赋值情况下的枚举变量内容
[Description("加")]
Add = 1,
[Description("减")]
Sub = 2,
[Description("除")]
Div = 3,
[Description("乘")]
Mul = 4
}
static void Main(string[] args)
{
OperateData testOperate1 = new OperateData();
OperateData testOperate2 = new OperateData();
OperateData testOperate3 = new OperateData();
testOperate1 = OperateData.Sub;
testOperate2 = (OperateData)1;
Console.WriteLine(testOperate1); //打印 Sub
Console.WriteLine(testOperate1.ToString()); //打印 Sub
Console.WriteLine(testOperate1.GetHashCode()); //打印 2
Console.WriteLine(testOperate1.GetType()); //打印的是当前枚举值类型 即:
Console.WriteLine(testOperate1.Equals("Sub")); //打印 False
Console.WriteLine(testOperate1.Equals("减")); //打印 False
Console.WriteLine(testOperate1.Equals(2)); //打印 False
OperateData temp = OperateData.Sub;
Console.WriteLine(testOperate1.Equals(temp)); //打印 True
Console.WriteLine(testOperate2); //打印 Add
Console.WriteLine(testOperate2.ToString()); //打印 Add
Console.WriteLine(testOperate2.GetHashCode()); //打印 1
Console.WriteLine(testOperate3); //打印 0
Console.WriteLine(testOperate3.ToString()); //打印 0
Console.WriteLine(testOperate3.GetHashCode()); //打印 0
testOperate3 = OperateData.Mul;
Console.WriteLine(testOperate3); //打印 Mul
Console.WriteLine(testOperate3.ToString()); //打印 Mul
Console.WriteLine(testOperate3.GetHashCode()); //打印 4
}
}
}
运行结果: