首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取字符枚举的更好方法

获取字符枚举的更好方法
EN

Stack Overflow用户
提问于 2011-11-14 08:56:53
回答 6查看 41K关注 0票数 29

有没有一种更干净的方法来获取C#中枚举的字符值。

 public enum DivisionStatus
        {
            None = 'N',
            Active = 'A',
            Inactive = 'I',
            Waitlist = 'W'
        }

string status = Enums.DivisionStatus.Active.ToString()[0].ToString(); // "A"
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-11-14 09:00:19

只需对值进行强制转换:

char status = (char)Enums.DivisionStatus.Active;

请注意,这将使用值而不是标识符。Enums.DivisionStatus.Active值是'A'的字符代码,因为这是您定义的值。

直接使用该值比查找该值的标识符更快。

票数 47
EN

Stack Overflow用户

发布于 2013-12-18 23:35:46

我构建了一个“伪枚举”来解决这个问题。在您的示例中,它可能如下所示:

public class DivisionStatus
{
    public static readonly DivisionStatus None = new DivisionStatus('N');
    public static readonly DivisionStatus Active = new DivisionStatus('A');
    public static readonly DivisionStatus Inactive = new DivisionStatus('I');
    public static readonly DivisionStatus Waitlist = new DivisionStatus('W');

    internal char Value { get; private set; }

    public override string ToString()
    {
        return Value.ToString();
    }

    protected DivisionStatus(char value)
    {
        this.Value = value;
    }
}

您可以像枚举一样使用它,在ToString()上返回字符枚举值,而不进行类型转换:

Console.WriteLine(DivisionStatus.None); // returns 'N'
票数 5
EN

Stack Overflow用户

发布于 2016-09-24 02:30:00

您也可以使用静态类。但是,如果您总是将值用作字符串,则可以同样轻松地将每个属性转换为字符串。这种方法的一个优点是,您可以为将在IntelliSense中显示的每个项目添加描述。

public static class DivisionStatus
{
    /// <summary>
    /// Some information about None
    /// </summary>
    public const char None = 'N';
    /// <summary>
    /// Some information about Active, blah blah
    /// </summary>
    public const char Active = 'A';
    /// <summary>
    /// Some information about Inactive, blah blah
    /// </summary>
    public const char Inactive = 'I';
    /// <summary>
    /// Some information about Waitlist, blah blah
    /// </summary>
    public const char Waitlist = 'W';
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8116152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档