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();
}
}
}
复制代码
目录
相关文章
|
2月前
|
安全 Java 开发者
Java 枚举(enum)详解
Java 中的枚举(`enum`)是一种特殊的数据类型,用于定义一组固定的常量,提升代码的类型安全性和可读性。枚举使用 `enum` 关键字定义,支持方法和构造函数,具有类型安全、单例、自动序列化等特点,并且可以遍历和用于 `switch` 语句中。实际应用包括状态机、指令集、类型标识等场景。枚举使代码更加清晰易维护。
|
5月前
|
存储 安全 API
C++一分钟之-C++中的枚举类型(enum class)
【6月更文挑战第25天】C++的`enum class`(强类型枚举)在C++11中引入,增强了枚举的作用域和类型安全,减少命名冲突。它要求使用全名(如`Color::Green`)访问枚举成员,并能显式指定底层类型。常见问题包括默认值非0、隐式转换和范围溢出,解决办法是明确赋值、显式转换和选择合适底层类型。高效技巧包括用于状态机、作为函数参数、创建别名和迭代。掌握这些能提升代码质量。
172 0
|
6月前
|
程序员 测试技术 C++
[C++] enum枚举类型用法
[C++] enum枚举类型用法
103 0
|
6月前
|
SQL Java 数据库连接
myabtis中是否可以映射 Enum 枚举类
myabtis中是否可以映射 Enum 枚举类
|
6月前
|
安全 Java 编译器
Java枚举(enum)
Java枚举(enum)
51 0
|
Java
Java枚举(Enum)的使用
Java枚举(Enum)的使用
82 0
|
Java 索引
枚举类 - 自定义枚举类与使用enum关键字
枚举类 - 自定义枚举类与使用enum关键字
119 0
|
Java
java 枚举 enum 和 Enum
java 枚举 enum 和 Enum。
109 0
java 枚举 enum 和 Enum
|
安全 Java 编译器
Java枚举(enum)常用的用法总结
Java枚举(enum)七种常见的用法汇总如下: JDK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。
376 0
Java枚举(enum)常用的用法总结