我有一个枚举
private enum TimeUnit
{
Day,
Month,
Year
}
我正在用以下内容填充描述:
return string.Concat(unit, "(s)");
其中 unit 是 TimeUnit。大多数情况下,这工作正常并显示“Days(s)”,但在特定服务器上显示为“1(s)”
什么会导致这个?
尝试使用Enum.GetName()
它还具有更安全的优点,因为它需要:
您应该使用适当的格式ToString
:
return string.Concat(unit.ToString("F"), "(s)");
因为Enum
数字枚举选项是用字符串表示的(认为它们是别名)
MSDN说:
此方法就像指定了通用格式字符“G”一样工作。也就是说,如果 FlagsAttribute 未应用于此枚举类型,并且有一个与此实例的值相等的命名常量,则返回值是一个包含常量名称的字符串。如果应用了 FlagsAttribute 并且有一个或多个命名常量的组合等于此实例的值,则返回值是一个字符串,其中包含一个以定界符分隔的常量名称列表。否则,返回值是此实例的数值的字符串表示形式。
因此,理想情况下,它应该可以正常工作(考虑到未应用 FlagsAttribute并且有一个命名常量等于此实例的值)。你能说说盒子之间的区别吗?
另外,尝试给出明确的数字。
private enum TimeUnit
{
Day = 1,
Month = 2,
Year = 3
}