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

C#枚举成员以数字开头的报错解决办法咨询

C#枚举数字开头命名的解决办法

C#的标识符命名规则明确禁止以数字开头,所以直接写9x19这种枚举成员名肯定报错,不存在非常规的绕过方法,以下是几种实用的合规方案:

方案1:添加前缀或转写数字为英文

这是最直接且符合编码规范的方式,比如给每个成员加前缀,或者把开头的数字转成英文拼写:

// 加前缀写法
public enum Caliber
{
    Cal_9x19,
    Cal_9x18,
    Cal_5x56
}

// 数字转英文写法
public enum Caliber
{
    NineX19,
    NineX18,
    FiveX56
}

方案2:用特性映射显示名称

如果需要在界面或日志中展示真实的口径字符串,但代码里保持合规命名,可以用DescriptionAttribute做映射:

using System.ComponentModel;
using System.Reflection;

public enum Caliber
{
    [Description("9x19")]
    NineX19,
    [Description("9x18")]
    NineX18,
    [Description("5x56")]
    FiveX56
}

// 扩展方法获取描述文本
public static class EnumExtensions
{
    public static string GetCaliberName(this Caliber caliber)
    {
        FieldInfo field = caliber.GetType().GetField(caliber.ToString());
        DescriptionAttribute attr = field?.GetCustomAttribute<DescriptionAttribute>();
        return attr?.Description ?? caliber.ToString();
    }
}

使用时直接调用扩展方法:Caliber.NineX19.GetCaliberName()就能得到"9x19"。

方案3:用@转义标识符(不推荐)

C#允许用@作为标识符的前缀来转义关键字或打破命名规则,比如:

public enum Caliber
{
    @9x19,
    @9x18,
    @5x56
}

虽然这段代码能正常编译,但这种写法不符合通用编码规范,会降低代码可读性,团队协作场景下不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:06:24