Enum ToString以数字形式显示
本文关键字:显示 字形 数字 ToString Enum | 更新日期: 2023-09-27 18:01:18
我有一个enum
private enum TimeUnit
{
Day,
Month,
Year
}
我正在填充一个描述:
return string.Concat(unit, "(s)");
其中unit为TimeUnit。大多数情况下,这工作得很好,显示"天(s)",但在特定的服务器上,它显示为"1(s)"。"
是什么原因导致的?
尝试使用enumt . getname ()
还具有更安全的优点,因为它需要:
- 传入的值不为空。
- 您传入的值的类型是枚举实际上可以用作其基础类型的类型,或者是枚举本身的类型。它使用GetType对值进行检查。
您应该使用ToString
:
return string.Concat(unit.ToString("F"), "(s)");
因为Enum
是数字枚举,可选地用字符串表示(考虑它们的别名)
MSDN显示:
此方法的工作原理与通用格式字符"G"相同指定。也就是说,如果FlagsAttribute未应用于此枚举类型,并且有一个命名常量等于的值在此实例中,返回值是包含名称的字符串常数的。如果应用了FlagsAttribute并且存在一个或多个命名常量的组合,等于this的值实例,则返回值是一个包含以分隔符分隔的常量名称列表。否则,返回值是this的数值的字符串表示形式实例。
所以理想情况下,在你的情况下,它应该工作得很好(考虑到FlagsAttribute没有应用,并且有一个命名常量等于这个实例的值)。你能说说这些盒子之间的区别吗?
同时,试着给出明确的数字。
private enum TimeUnit
{
Day = 1,
Month = 2,
Year = 3
}