我有一个枚举
private enum TimeUnit
{
Day,
Month,
Year
}
我正在填写描述:
return string.Concat(unit, "(s)");
单位是TimeUnit。大多数情况下这工作正常并显示“Days(s)”但是在特定服务器上它显示为“1(s)”
导致这种情况的原因是什么?
答案 0 :(得分:7)
尝试使用Enum.GetName()
它还具有safer的优势,因为它需要:
答案 1 :(得分:3)
您应该使用ToString
:
return string.Concat(unit.ToString("F"), "(s)");
答案 2 :(得分:0)
因为Enum
是数字枚举optionnaly表示字符串(将它们视为别名)
答案 3 :(得分:0)
MSDN说:
此方法的工作方式与通用格式字符“G”相同 指定。也就是说,如果FlagsAttribute未应用于此 枚举类型,并且有一个等于值的命名常量 在这个实例中,返回值是一个包含名称的字符串 常数。如果应用FlagsAttribute并且有一个 一个或多个命名常量的组合,等于this的值 实例,然后返回值是一个包含a的字符串 以分隔符分隔的常量名称列表。否则, return value是此数值的字符串表示形式 实例
理想情况下,在你的情况下它应该工作正常(考虑到FlagsAttribute未应用并且有一个命名常量等于此实例的值)。你能提一下盒子之间的区别吗?
另外,请尝试给出明确的数字。
private enum TimeUnit
{
Day = 1,
Month = 2,
Year = 3
}