[英]How do I define a C# enum that includes integers as values?
我正在設計一個需要“位置”字段的應用程序。 該位置的值是“3241”,“4112”,“ND”和“TRAVEL”,我正在嘗試設置包含這些值的enum
。
我開始了
enum projectLocation {3241,4112,ND,TRAVEL};
但是值3241和4112表示語法錯誤 - 期望的identifier expected
- 對於enum
的第一個值。 如果我正確理解enum
,那是因為上面的語句正在查找enum
的整數indeces為3241
和4112
。 這是正確的假設嗎?
我嘗試用以下內容覆蓋它
enum projectLocation {3241=0,4112,ND,TRAVEL};
和
enum projectLocation {3241=0,4112=1,ND=2,TRAVEL=3};
但我仍然在3241
值上得到相同的語法錯誤。 有趣的是,在這兩個語句中,4112上沒有語法錯誤,但我can't find the namespace or name ND
和...TRAVEL
有意義的是, enum
不允許混合使用字符串和整數,並且我還有兩個其他enum
工作正常並且只是字符串值的列表,證實了這個理論。 有沒有辦法強制enum
接受數值作為字符串? 我無法在MSDNs C#文檔中找到任何引用。
你不能像你想要的那樣完成它。 這是另一種選擇:
enum projectLocation {
L3241=3241,
L4112=4112,
ND=2,
TRAVEL=3
}
用字母開頭使它們成為有效的枚舉標識符,並將它們的值設置為等於它們的數量,這樣就可以執行(projectLocation)3241
並獲得預期的L3241
值。
如果序列化時需要值為3241
和4112
,請為序列化方法包含適當的屬性,例如使用Json.NET:
enum projectLocation {
[JsonProperty("3241")]
L3241=3241,
[JsonProperty("4112")]
L4112=4112,
ND=2,
TRAVEL=3
}
枚舉被稱為命名常量,所以基本上你給一些常量命名。 名稱是c#中的“標識符”,其中標識符可以包含數字,但第一個字符不能是數字。
您可以在此之前添加_
以修復此錯誤。
enum projectLocation
{
_3241=0,
_4112=1,
ND=2,
TRAVEL=3
}
另請注意字段,屬性方法或上述此標識符規則下的任何內容。
你需要做這樣的事情:
enum projectLocation { v3241, v4112, ND, TRAVEL };
要么:
enum projectLocation { _3241, _4112, ND, TRAVEL };
我傾向於使用下划線。
C#不允許成員名的第一個字符以數字開頭。 考慮使用@
字符作為前綴,或者傳達對代碼的讀者有用的含義的其他字符,因為對於不熟悉3241
在您的上下文中的重要性的讀者來說,孤立的數字可能不是非常直觀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.