C#如何在枚举中添加正斜杠

时间:2016-05-05 08:59:45

标签: c#

我的C#课中有一个枚举。

public enum OutputFormat {
      DOCX = 0,
      PDF = 1,
      @out/pdf = 2
  }

如何在其中添加/ pdf?感谢

3 个答案:

答案 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;
        }
    }
}

输出:

Console Output