在编码中,通常我们会用Enum来定义名称常量表示某些状态,这样让程序代码可读性提高。最近对.net对Enum类型进行了复习。
几个要点:
1.可以显式将枚举类型的变量转换整型。
2.可以对一个枚举变量进行递增或递减操作。
3.定义枚举时手工指定自己想要的整数值。
4.可以选择除int之外的其他类型定义枚举类型的值,如byte,long.
5.所有的Enum派生自Object,Object.ToString()已经自动为每个枚举进行了覆写,作用是返回枚举常数定义时的名称字符串。
例如String转Enum, 可以用Enum.Parse方法。以及.net 3.5 System.Data.DataSetExtensions 对DataRow进行了扩展,支持泛型。
避免装拆箱,提高性能。代码如下:
[Test]
/// <summary>
/// Enum Knowledge review
/// <remarks>
/// petter liu http://wintersun.cnblogs.com
/// </remarks>
/// </summary>
public void Alternative()
{
//Enum类型的值默认是int,默认从0开始,所以此处UnDeliver为0
Console.WriteLine((int)Status.UnDeliver);
//设定某个元素的值时,其后元素递增,此处Deliver为2
Console.WriteLine((int)Status.Deliver);
//Recevice 为3
Console.WriteLine((int)Status.Recevice);
Console.WriteLine("------------------");

//define a DataTable
DataTable dt = new DataTable("testname");
DataColumn column=new DataColumn("Status",System.Type.GetType("System.String"));
dt.Columns.Add(column);
DataRow row = dt.NewRow();
row[0] = Status.UnDeliver;
dt.Rows.Add(row);
Status result;

//从字符串转回枚举
result = (Status)Enum.Parse(typeof(Status), row[0].ToString());
Console.WriteLine(result);
Console.WriteLine((int)result);
Console.WriteLine("------------------");

//以对象数组的形式返回枚举中的所有值
foreach(object o in Enum.GetValues(typeof(Status)))
Console.WriteLine(o.ToString());
Console.WriteLine("------------------");

//返回一个枚举类型中所有值的名称字符串数组
foreach (string s in Enum.GetNames(typeof(Status)))
Console.WriteLine(s);
Console.WriteLine("------------------");

Status stauts = Status.Fail;
//G返回 名称
string s1 = Enum.Format(typeof(Status), stauts, "G");
//D返回 值
string s2 = Enum.Format(typeof(Status), stauts, "D");
Console.WriteLine(s1+" "+s2);

}

[Test]
public void DataRowNormal()
{
DataTable dt = new DataTable("testname");
DataColumn column = new DataColumn("Status",typeof(Status));
dt.Columns.Add(column);
DataRow row = dt.NewRow();
row[0] = Status.UnDeliver;
dt.Rows.Add(row);

Status result;
result = (Status)row[0];
Console.WriteLine(result);
}

[Test]
/// <summary>
/// .net 3.5 System.Data.DataSetExtensions 对DataRow进行了扩展,支持泛型
/// <remarks>
/// petter liu http://wintersun.cnblogs.com
/// </remarks>
/// </summary>
public void DataRowGeneric()
{
DataTable dt = new DataTable("testname");
DataColumn column = new DataColumn("Status", typeof(Status));
dt.Columns.Add(column);
DataRow row = dt.NewRow();
//System.Data.DataSetExtensions.SetField<T>
row.SetField<Status>(0,Status.UnDeliver);
dt.Rows.Add(row);
//System.Data.DataSetExtensions.Field<T>
Status result= row.Field<Status>(0);

Console.WriteLine(result.ToString("d"));
Console.WriteLine(result.ToString("G"));
Console.WriteLine(Enum.GetName(typeof(Status), result));
}
几个要点:
1.可以显式将枚举类型的变量转换整型。
2.可以对一个枚举变量进行递增或递减操作。
3.定义枚举时手工指定自己想要的整数值。
4.可以选择除int之外的其他类型定义枚举类型的值,如byte,long.
5.所有的Enum派生自Object,Object.ToString()已经自动为每个枚举进行了覆写,作用是返回枚举常数定义时的名称字符串。
例如String转Enum, 可以用Enum.Parse方法。以及.net 3.5 System.Data.DataSetExtensions 对DataRow进行了扩展,支持泛型。
避免装拆箱,提高性能。代码如下:


























































































后记,还有就是位域,一个枚举的实例包含多个枚举值。在上面加上System.FLAGs的Attribute.NET Framework中的ThreadState就是
这个实现的,二进制标志枚举。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)