c# @在enum中从XSD生成类

本文关键字:XSD 中从 enum | 更新日期: 2023-09-27 18:07:11

使用xsd.exe我有一个枚举,其中一个元素前面有一个@符号。我不知道为什么,我也不知道这是为了什么或者是什么意思。在谷歌上搜索一个符号的效率并不高。

原始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似乎很高兴)

谢谢。

c# @在enum中从XSD生成类

转义c#中的default关键字。

参见这个问题:c#中变量名中@字符的用途/意义是什么?

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

如果名称为'event'或'public',您将看到相同的行为

default是一个c#关键字。

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

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

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