如何使用空格的枚举值?

如何在.NET使用枚举实现以下function? 我想对每个包含空格的值进行描述。

 public enum PersonGender { Unknown = 0, Male = 1, Female = 2, Intersex = 3, Indeterminate = 3, Non Stated = 9, Inadequately Described = 9 } 

我希望能够在每次使用此类型的值时选择是使用描述还是整数。

不,这是不可能的,但您可以将属性附加到enum成员。 EnumMemberAttribute完全是为您描述的目的而设计的。

 public enum PersonGender { Unknown = 0, Male = 1, Female = 2, Intersex = 3, Indeterminate = 3, [EnumMember(Value = "Not Stated")] NonStated = 9, [EnumMember(Value = "Inadequately Described")] InadequatelyDescribed = 9 } 

有关如何使用EnumMemberAttribute将字符串转换为enum值的更多信息,请参阅此主题 。

这很简单。 为您的字符串创建一个扩展方法,该方法根据您的编码约定返回格式化字符串。 你可以在很多地方使用它,而不仅仅是在这里。 这个适用于camelCase和TitleCase。

  public static String ToLabelFormat(this String s) { var newStr = Regex.Replace(s, "(?<=[AZ])(?=[AZ][az])", " "); newStr = Regex.Replace(newStr, "(?<=[^AZ])(?=[AZ])", " "); newStr = Regex.Replace(newStr, "(?<=[A-Za-z])(?=[^A-Za-z])", " "); return newStr; } 
 var assembly = Assembly.LoadFrom("ResourcesLib.DLL"); var resourceManager = new ResourceManager("ResourcesLib.EnumDescriptions", assembly); var lst = Enum.GetValues(typeof(PersonGender)).Cast().ToList(); foreach (var gender in lst) { Console.WriteLine(gender); // Name Console.WriteLine((int)gender); //Int Value Console.WriteLine(resourceManager.GetString(gender.ToString()));//localized Resorce } 

所以空间可能存在于本地化资源中……