有没有一种更干净的方法来获取C#中枚举的字符值。
public enum DivisionStatus
{
None = 'N',
Active = 'A',
Inactive = 'I',
Waitlist = 'W'
}
string status = Enums.DivisionStatus.Active.ToString()[0].ToString(); // "A"
发布于 2011-11-14 09:00:19
只需对值进行强制转换:
char status = (char)Enums.DivisionStatus.Active;
请注意,这将使用值而不是标识符。Enums.DivisionStatus.Active
值是'A'
的字符代码,因为这是您定义的值。
直接使用该值比查找该值的标识符更快。
发布于 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'
发布于 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';
}
https://stackoverflow.com/questions/8116152
复制相似问题