枚举中的C#@从XSD生成类

时间:2011-08-29 19:50:30

标签: c# enums xsd

使用xsd.exe我有一个枚举,其中一个元素前面有一个@符号。我无法理解为什么,我无法弄清楚它的用途或含义。在Google上搜索符号的效率并不高。

原始XSD片段:

  <xs:simpleType name="stopLocation">
    <xs:restriction base="xs:string">
      <xs:enumeration value="default"/>
      <xs:enumeration value="near"/>
      <xs:enumeration value="far"/>
      <xs:enumeration value="nearExact"/>
      <xs:enumeration value="farExact"/>
    </xs:restriction>
  </xs:simpleType>

生成的类片段:

public enum stopLocation {
    @default,
    near,
    far,
    nearExact,
    farExact,
}

(是的,最后一个元素有一个逗号,VS似乎很满意)

感谢。

4 个答案:

答案 0 :(得分:5)

它从C#转义default关键字。

请参阅此问题:What's the use/meaning of the @ character in variable names in C#?

答案 1 :(得分:1)

这是因为枚举值名称(默认值)是保留字。在C#中,保留字必须附加@,以便编译器知道如何解释它们。

您会看到与“event”或“public”等名称相同的行为。

答案 2 :(得分:1)

default是一个C#关键字。

@符号用作转义语言关键字的方法,以便它们可以用作变量名称和其他标识符。

答案 3 :(得分:0)

http://dotnetdud.blogspot.com/2008/12/how-to-use-reserved-words-in-net-c.html

“@”语法允许您使用保留的语言单词作为变量/成员名称。在大多数情况下,我认为这种做法很糟糕。