有没有更简洁的方法来获取C#中枚举的char值.
public enum DivisionStatus
{
None = 'N',
Active = 'A',
Inactive = 'I',
Waitlist = 'W'
}
string status = Enums.DivisionStatus.Active.ToString()[0].ToString(); // "A"
Run Code Online (Sandbox Code Playgroud)
Guf*_*ffa 35
刚刚施展价值:
char status = (char)Enums.DivisionStatus.Active;
Run Code Online (Sandbox Code Playgroud)
请注意,这将使用值而不是标识符.该Enums.DivisionStatus.Active值是字符代码'A',因为它是您定义的值.
直接使用该值比查找值的标识符更快.
您还可以使用静态类。不过,如果您始终将值用作字符串,则可以轻松地将每个属性设置为字符串。此方法的优点之一是您可以为将在 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';
}
Run Code Online (Sandbox Code Playgroud)
我建立了一个解决问题的“伪枚举”。在您的情况下,它可能看起来像:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以像枚举一样使用它,该枚举在ToString()上返回char枚举值,而无需强制转换:
Console.WriteLine(DivisionStatus.None); // returns 'N'
Run Code Online (Sandbox Code Playgroud)