C#枚举的使用

本文介绍如何在 C# 中定义枚举类型,并演示了枚举值的获取、转换及有效性判断等实用操作。此外,还提供了一个枚举处理类,方便开发者进行枚举的通用操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个枚举,它表示一组有限的值,对可能的值进行约束。

1、定义一个枚举

//枚举
public enum Genders
{
    Male = 1,
    Female = 2
}

2、获取枚举的值

//获取枚举的值
Genders genders = Genders.Female;
int value = (int)genders;           //2
string key = genders.ToString();    //Female

3、从一个字符串转换成枚举

//从一个字符串转换成枚举
Genders gender = (Genders)Enum.Parse(typeof(Genders), "Female");
Console.WriteLine(gender); 

4、从一个枚举值转换成枚举

//从一个枚举值转换成枚举
Genders gender = (Genders)Enum.ToObject(typeof(Genders), 2);
Console.WriteLine(gender);  

5、从一个字符串转换枚举值

//从一个字符串转换枚举值
int valus = (int)(Enum.Parse(typeof(Genders), "Female"));
Console.WriteLine(valus);

6、判断是否有效枚举值

//判断是否有效枚举值
bool b1 = System.Enum.IsDefined(typeof(Genders), 2);           //True
bool b2 = System.Enum.IsDefined(typeof(Genders), "Female");    //True
bool b3 = System.Enum.IsDefined(typeof(Genders), 99);          //False
bool b4 = System.Enum.IsDefined(typeof(Genders), "ABC");       //False

7、枚举的遍历

//枚举的遍历
public static Dictionary<string, int> GetGenders()
{
    Dictionary<string, int> result = new Dictionary<string, int>();
    string key = "";
    int value = 0;
    foreach (int gender in Enum.GetValues(typeof(Genders)))
    {
        key = Enum.GetName(typeof(Genders), gender);
        value = gender;
        result.Add(key, value);
    }
    return result;
}

8、枚举公共处理类

/// <summary>
/// 枚举公共处理类
/// </summary>
public class EnumHandler<T>
{
    /// <summary>
    /// 转换成枚举
    /// </summary>
    public T ToEnum(object value)
    {
        int i = 0;
        if (int.TryParse(value.ToString(), out i))
        {
            return (T)Enum.ToObject(typeof(T), i);
        }
        else
        {
            return (T)Enum.Parse(typeof(T), value.ToString());
        }
    }

    /// <summary>
    /// 判断是否有效枚举值
    /// </summary>
    public bool IsEnumValue(Object value)
    {
        int i = 0;
        if (int.TryParse(value.ToString(), out i))
        {
            return System.Enum.IsDefined(typeof(T), i);
        }
        else
        {
            return System.Enum.IsDefined(typeof(T), value);
        }
    }

    /// <summary>
    /// 枚举的遍历
    /// </summary>
    public Dictionary<string, int> ToDictionary()
    {
        Dictionary<string, int> result = new Dictionary<string, int>();
        string key = "";
        int value = 0;
        foreach (int gender in Enum.GetValues(typeof(T)))
        {
            key = Enum.GetName(typeof(T), gender);
            value = gender;
            result.Add(key, value);
        }
        return result;
    }
}

测试:

static void Main(string[] args)
{
    object value = 2;
    EnumHandler<Genders> enumHandler = new EnumHandler<Genders>();
    if (enumHandler.IsEnumValue(value))
    {
        Genders gender = enumHandler.ToEnum(value);
        Console.WriteLine(gender);
    }
    else
    {
        Console.WriteLine("无效的枚举值");
    }
    Console.ReadLine();
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值