2011-03-26 101 views
2

我有一个枚举,有两个值。但是,第二个值包含一个斜杠(值为application/xml)。这会导致出现一些语法值。有没有像这样的成员枚举是不可能的?是否有可能具有包含斜线的值的枚举?

如果是这样,那么解决方案是什么?

谢谢

+0

解决方案通常是为了枚举成员的名称更改为一个有效的.NET标识,比如'ApplicationXml'。有什么阻止你这样做吗? – 2011-03-26 18:52:15

+0

不是。这只是我将在http请求中使用这个值,所以我需要将/ back放入,但这对于一些字符串解析来说非常简单。 – dotnetdev 2011-03-26 19:01:06

回答

5

Enum值只能是整数类型(字节,为sbyte,短,USHORT,INT,UINT,长或ulong)。枚举名称只能是valid .NET identifiers =>否/可能。因此,无论您想要做什么(您没有在您的问题中解释过),解决方案都不会使用枚举。一种可能的选择是使用Dictionary<TKey, TValue>。但是,如果不知道你的确切情况以及你想达到的目标,很难提出准确的答案。

-1

如果它是一个字符串放置@符号infront的引号。这应该工作。 @"application/xml"

+0

它适用于引号?有趣。 * [快速检查] *不,不。这是一个逐字字符串... – Kobi 2011-03-26 18:46:28

+0

OP在询问'enum's,而不是'string's。与其他语言不同(例如F#就是其中之一),C#不允许标识符包含任意字符,也不能“转义”标识符来绕过该限制。 – stakx 2011-03-26 19:01:29

+0

除了@ stakx的观点,只有在我们讨论* back *斜线时,'@'才会有帮助,即'application \ xml'。 – 2011-03-26 20:57:08

0

枚举值必须是整数类型,但如果要将字符串映射到字符串,则可以使用Dictionary<string, string>。请参阅documentation

1

不,你没有给出枚举值的值,你提供了标识符这些值。标识符必须遵循与其他地方的标识符相同的规则,即不包含斜杠。

+0

这个答案点击我。谢谢。 – 2016-10-25 17:48:07

2

你可以只使用一个辅助类,并声明这些值作为常量字符串:

public static class MimeTypes 
{ 
    public const string ApplicationXml = "application/xml"; 
    public const string AsfVideo = "video/wmv"; 
} 

... 
string xmlMime = MimeTypes.ApplicationXml; 
相关问题