2011-08-29 186 views
3

使用xsd.exe我有一個枚舉,其中一個元素前面有一個@符號。我無法弄清楚爲什麼,而且我無法弄清楚它是爲了什麼或者它是什麼意思。在Google上搜索符號的效率並不高。C#@枚舉從XSD生成的類

原始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似乎樂意與逗號)

感謝。

+0

可能是因爲default是一個C#關鍵字。 – mdm20

+0

'default'是一個保留關鍵字; '@'預留一個保留關鍵字讓你可以使用它作爲合法的標識符(使用它是一種異味IMO(特別是令人討厭的'@ this'))。看似無關的'',按規範是合法的。它使代碼維護和代碼生成變得容易一些。 – jason

+0

啊,我專注於@作爲枚舉的一部分而不是語言特性 - 現在有意義!我從來沒有必要使用它,因此直到現在還不知道它。我會看看是否可以改變繼承的XSD。感謝大家。 – GeoffM

回答

1

這是因爲發生在枚舉值名稱(默認)是一個保留字。在C#中,保留字必須附加@,以便編譯器知道如何解釋它們。

你會看到像「事件」或「公共」的名稱相同的行爲。

1

default是C#關鍵字。

@符號被用作一種方式來逃避語言的關鍵字,使它們可以被用來作爲變量名和其它標識符。