ENUM帮助类

简介:
复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Reflection;

namespace CommonFunction
{
public class EnumClass
{
private static object refLock = new object();
private static EnumClass instance=null;

public static EnumClass Instance
{
get {
lock (refLock)
{
if (instance == null)
{
lock (refLock)
{
instance
= new EnumClass();
}
}
}
return instance;
}
}


/// <summary>
/// 获取指定枚举类型的键值对集合
/// </summary>
/// <param name="type">枚举类型</param>
/// <returns></returns>
public Hashtable GetKeysAndValues(Type type)
{
if (!CheckType(type))
{
return null;
}

Hashtable list
= new Hashtable();
foreach (string key in Enum.GetNames(type))
{
string val=Enum.Format( type, Enum.Parse(type, key), "d");
list.Add(key,val);
}

return list;
}


/// <summary>
/// 获取枚举类型元素集合
/// </summary>
/// <param name="type">枚举类型</param>
/// <returns></returns>
public Array GetKeys(Type type)
{
if (!CheckType(type))
{
return null;
}

//检索指定枚举中常数值的数组
return Enum.GetValues(type);
}


/// <summary>
/// 检验枚举类型
/// </summary>
/// <param name="type">类型</param>
/// <returns></returns>
private bool CheckType(Type type)
{
if (type == null)
{
return false;
}

if (!type.IsEnum)
{
throw new Exception(type.FullName + "不是枚举类型");
}

return true;
}


/// <summary>
/// 获取枚举类型值集合
/// </summary>
/// <param name="type">枚举类型</param>
/// <returns></returns>
public List<int> GetValues(Type type)
{
Array array
= GetKeys(type);
List
<int> list = new List<int>();
foreach (object obj in array)
{
list.Add((
int)obj);
}

return list;
}

}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace CommonFunction
{
class Program
{
enum Days { Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6 };
static void Main(string[] args)
{
Hashtable hashtable
= EnumClass.Instance.GetKeysAndValues(typeof(Days));
Console.WriteLine(
"---------枚举类型键值对---------");
foreach (DictionaryEntry de in hashtable)
{
Console.WriteLine(de.Key
+" = "+de.Value);
}
Console.WriteLine();

Console.WriteLine(
"---------枚举类元素---------");
Array array
= EnumClass.Instance.GetKeys(typeof(Days));
foreach (Days day in array)
{
Console.WriteLine(day);
}
Console.WriteLine();

Console.WriteLine(
"---------枚举类值---------");
List
<int> list = EnumClass.Instance.GetValues(typeof(Days));
foreach (int i in list)
{
Console.WriteLine(i);
}
Console.ReadLine();
}
}
}
复制代码

目录
相关文章
|
5月前
|
C语言
C enum(枚举)
C enum(枚举)
33 0
|
10天前
|
C#
C# 枚举(Enum)
枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。 C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。
33 9
|
23天前
|
存储 C语言
C enum(枚举)详解
在C语言中,`enum`(枚举类型)允许用户定义包含命名整数常量的数据类型,提高了代码的可读性和可维护性。通过关键字`enum`定义枚举,如`enum Color {RED, GREEN, BLUE}`。枚举值默认从0开始递增,也可自定义。枚举类型实际上是整型的别名,可用于简化代码并限制变量的具体取值范围。
86 15
|
4月前
|
存储 安全 API
C++一分钟之-C++中的枚举类型(enum class)
【6月更文挑战第25天】C++的`enum class`(强类型枚举)在C++11中引入,增强了枚举的作用域和类型安全,减少命名冲突。它要求使用全名(如`Color::Green`)访问枚举成员,并能显式指定底层类型。常见问题包括默认值非0、隐式转换和范围溢出,解决办法是明确赋值、显式转换和选择合适底层类型。高效技巧包括用于状态机、作为函数参数、创建别名和迭代。掌握这些能提升代码质量。
118 0
|
5月前
|
编译器
匿名类型(Class)
匿名类型是无需预定义的,直接通过 `new {}` 创建实例的类型,编译器自动推断并生成只读属性和相关方法如`ToString()`。常用于简单场景,但ValueTuple提供更好的性能且无需额外类型。
|
5月前
|
程序员 C语言
c enum(枚举)
c enum(枚举)
57 1
|
5月前
|
程序员 测试技术 C++
[C++] enum枚举类型用法
[C++] enum枚举类型用法
75 0
|
5月前
|
SQL Java 数据库连接
myabtis中是否可以映射 Enum 枚举类
myabtis中是否可以映射 Enum 枚举类
|
11月前
|
Java 索引
枚举类 - 自定义枚举类与使用enum关键字
枚举类 - 自定义枚举类与使用enum关键字
107 0
|
12月前
EF数据类里面使用枚举类型enum
EF数据类里面使用枚举类型enum
39 0