C#@在从XSD生成的枚举类中
使用xsd.exe,我得到了一个枚举,其中一个元素前面有一个@符号。我不知道为什么,我也不知道这是为了什么,或者这意味着什么。在谷歌上搜索一个符号的效率并不高 原始XSD片段:C#@在从XSD生成的枚举类中,c#,enums,xsd,C#,Enums,Xsd,使用xsd.exe,我得到了一个枚举,其中一个元素前面有一个@符号。我不知道为什么,我也不知道这是为了什么,或者这意味着什么。在谷歌上搜索一个符号的效率并不高 原始XSD片段: <xs:simpleType name="stopLocation"> <xs:restriction base="xs:string"> <xs:enumeration value="default"/> <xs:enumeration va
<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#中转义
默认值
关键字
请参阅此问题:发生这种情况是因为枚举值名称(默认值)是保留字。在C#中,保留字必须附加
@
,以便编译器知道如何解释它们
您将看到类似“事件”或“公共”名称的相同行为。
“@”语法允许您使用保留语言字作为变量/成员名称。在大多数情况下,我认为这是一个很差的练习。是一个C关键字。
@
符号用作转义语言关键字的一种方式,以便它们可以用作变量名和其他标识符。可能是因为default是C#关键字。default
是保留关键字;保留关键字前面的@
允许您将其用作合法标识符(在我看来,使用它是一种气味(尤其是恶心的@this
)。根据规范,看似无关的,
是合法的。它使代码维护和代码生成变得更容易一些。啊,我的重点是@是枚举的一部分,而不是作为一种语言特性-现在有意义了!我从来没有必要使用它,因此直到现在才知道它。我将看看是否可以更改继承的XSD。谢谢大家。