如何在C#枚举中使用特殊字符?

Edu*_*nna 10 .net enums special-characters

例如:

public enum Unit{
  KW,
  kV,
  V,
  Hz,
  %V
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,%是一个特殊字符.那么,我怎样才能将这个字符放入枚举中呢?

Tom*_*cek 32

即使你可以这样做(它看起来你不能),它可能不是一个好主意,因为你将混合如何显示枚举与程序代码来操纵它.更好的选择是定义属性(或使用现有DisplayNameAttribute)并使用名称作为附加元数据注释您的枚举:

public enum Unit{ 
  [DisplayName("Hz")] Hertz, 
  [DisplayName("%V")] Volt 
} 
Run Code Online (Sandbox Code Playgroud)

  • 我使用了Description属性,因为我在使用DisplayName时收到了这个错误:"Attribute'DisplayName'在这个声明类型上无效.它仅对'class,method,property,indexer,event'声明有效." (9认同)
  • 这个方法+1.我们使用DisplayKeyAttribute将枚举值与可本地化的字符串相关联. (3认同)

Meh*_*ari 9

枚举成员不应用于用户界面显示目的.应将它们映射到字符串以便显示.您可以创建一个字符串数组(或字典),将每个枚举成员映射到字符串以进行用户交互.

也就是说,要直接回答你的问题,你可以使用\uxxxxVare xxxx是表示Unicode代码点的十六进制数%.这远非推荐.正如Henk所指出的那样,这不会起作用,%因为它不在Unicode类Lu,Ll,Lt,Lm,Lo,Nl,Mn,Mc,Nd,Pc,Cf(字母,数字,连接和格式化字符)中.标识符只接受这些字符.

  • 如果不接受\\ xxx作为alpha字符(并且%不是),这仍然会产生编译错误.%=\0025 (2认同)

小智 5

只需注册另一种方法即可,您可以用一种简单的方法用常量定义“您自己的”枚举数。在你的例子中

public class UnitEnum
{
  public const string KW = "KW";
  public const string Volt = "%V";
}
Run Code Online (Sandbox Code Playgroud)

要访问,它只是: UnitEnum.Volt