You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在枚举中设置嵌套枚举值?附示例代码与访问需求

如何在C#中实现带属性的枚举(类似嵌套枚举的效果)

你想要的是让每个年龄组“枚举成员”都附带FromAge和ToAge属性,能直接通过AgeGroup.Teenager.FromAge这样的语法访问对吧?可惜C#的原生枚举本质是值类型,没办法直接嵌套枚举或者给成员添加这样的复杂属性,但有两种非常实用的方案可以实现类似的效果:

方案1:给枚举添加扩展方法(保留原生枚举特性)

这种方法会保留枚举的所有原生功能(比如可以用在switch语句、枚举约束里),同时通过扩展方法提供属性访问能力:

首先定义基础的枚举:

public enum AgeGroup
{
    Teenager,
    Young
}

然后写一个静态扩展类,给每个枚举成员映射对应的年龄范围:

public static class AgeGroupExtensions
{
    // 用字典存储每个枚举成员对应的年龄范围
    private static readonly Dictionary<AgeGroup, (int FromAge, int ToAge)> _ageRanges = new()
    {
        { AgeGroup.Teenager, (16, 17) },
        { AgeGroup.Young, (18, 24) }
    };

    // 获取起始年龄的扩展方法
    public static int GetFromAge(this AgeGroup ageGroup)
    {
        return _ageRanges[ageGroup].FromAge;
    }

    // 获取结束年龄的扩展方法
    public static int GetToAge(this AgeGroup ageGroup)
    {
        return _ageRanges[ageGroup].ToAge;
    }
}

使用的时候像这样调用:

int teenStart = AgeGroup.Teenager.GetFromAge(); // 返回16
int youngEnd = AgeGroup.Young.GetToAge(); // 返回24

方案2:用静态类模拟枚举(完全贴合你的语法需求)

如果你更看重AgeGroup.Teenager.FromAge这种直接的属性访问语法,可以用一个密封的静态类来模拟枚举的行为,每个“枚举成员”是类的静态实例,自带属性:

public sealed class AgeGroup
{
    // 定义静态成员,模拟枚举选项
    public static readonly AgeGroup Teenager = new AgeGroup(16, 17);
    public static readonly AgeGroup Young = new AgeGroup(18, 24);

    // 公开属性,供外部访问
    public int FromAge { get; }
    public int ToAge { get; }

    // 私有构造函数,防止外部创建新的实例
    private AgeGroup(int fromAge, int toAge)
    {
        FromAge = fromAge;
        ToAge = toAge;
    }

    // 可选:重写ToString,方便调试和输出
    public override string ToString()
    {
        return $"Age Group: {FromAge} to {ToAge}";
    }
}

使用的时候完全符合你的预期:

int teenFrom = AgeGroup.Teenager.FromAge; // 直接获取16
int youngTo = AgeGroup.Young.ToAge; // 直接获取24

这种方案的优势是语法完全贴合你的需求,而且可以灵活添加更多属性或方法;唯一的小缺点是它不是原生枚举类型,不能直接用在switch语句里(不过可以通过自定义逻辑实现类似效果)。

选择建议

  • 如果需要保留枚举的所有原生特性(比如枚举约束、Enum类的工具方法),优先选方案1;
  • 如果更看重简洁直观的属性访问语法,优先选方案2。

内容的提问来源于stack exchange,提问作者Karthik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:27:57