我已經在C#中工作了8個月左右所以請原諒我,如果這是愚蠢的......Enum.GetName()作爲不變的性質
我有一個枚舉,我需要字符串值的幾倍類。所以我想使用Enum.GetName()將它設置爲一個沒有問題的字符串變量。我只是這樣做...
private string MyEnumString = Enum.GetName(typeof(MyEnum), MyEnum.Name);
它工作得很好。
但我試圖保護它好一點,因爲這個特定的枚舉比所有其他更重要,如果我不小心改變了字符串值,所以我試圖使它像這樣const。
private const string MyEnumString = Enum.GetName(typeof(MyEnum), MyEnum.Name);
我的眼睛,這似乎不錯,因爲都應該在編譯時是已知的。
但Visual Studio 2013引發錯誤,指出「無法解析符號GetName」。我知道它沒有標記爲「常量」時可以使用。
因此,這導致我有兩個關於這方面的問題? 爲什麼它沒有引用GetName枚舉? (經過一些研究,我懷疑這是GetName作爲一種方法,而不是Enum類的屬性,但錯誤信息對我來說並沒有意義)
最後是否有一種方法可以讀取MyEnum.Name的名稱改爲一個常量字符串,而不是我正在做的事情?
可以使用Visual Studio 2015年呢?然後你可以使用'nameof' ... –
「在我看來,這看起來很好,因爲它應該在編譯時都知道。」 - 只有編譯器知道'Enum.GetName'的作用,它不會......(就像它不知道'Math.Sqrt'是什麼一樣,所以'const double x = Math.Sqrt(2.0) ;'也不會編譯。) –
@JonSkeet不幸的是,我們暫時必須堅持使用Visual Studio 2013,但是我將不得不考慮「nameof」,因爲我們將在2015年底之前進入2015年。 – DVS