我的C#课中有一个枚举。
public enum OutputFormat {
DOCX = 0,
PDF = 1,
@out/pdf = 2
}
如何在其中添加/ pdf?感谢
答案 0 :(得分:4)
Enum值只能是整数类型(byte,sbyte,short,ushort,int,uint,long或ulong)。枚举名称只能有效.NET identifiers =>没有/
可能。
答案 1 :(得分:0)
从技术上讲,不,你不能归因于/
。
C# specification" 1.10 Enums":
枚举类型是具有一组命名常量的不同值类型。
常规命名的确切规则可以从规范" 2.4.2标识符"中找到。
此外,如果确切的名称对你来说比枚举值更重要,那么你应该使用字符串常量,并避免可能的错误,当另一个开发人员选择重构这些名称以删除非正统字符时(包括丑陋的{{1} }} - 。前缀)
例如,看看MS如何选择实施@
:
MediaTypeNames
答案 2 :(得分:0)
虽然枚举不可能包含“/”,但是如果您特别希望使用“out / pdf”格式,则可以实现自己的Enum.ConvertToString()扩展方法。
Enum Extension Method类:
global ord
用法:
using System;
namespace TestConsole
{
public static class OutputFormatEnum
{
public enum OutputFormat
{
DOCX = 0,
PDF = 1,
outpdf = 2 //@out/pdf
}
public static String ConvertToString(this OutputFormat outputFormat)
{
return (outputFormat == OutputFormat.outpdf) ? "out/pdf" : Enum.GetName(outputFormat.GetType(), outputFormat);
}
public static OutputFormat ConverToEnum(this string enumValue)
{
OutputFormat outputFormat;
if (!Enum.TryParse(enumValue, true, out outputFormat))
{
if (enumValue.Equals("out/pdf", StringComparison.InvariantCultureIgnoreCase))
outputFormat = OutputFormat.outpdf;
else
throw new InvalidCastException($"'{enumValue}' is not a valid value for enum OutputFormat");
}
return outputFormat;
}
}
}
输出: