這是一種duplicate question,但沒有真正的解決方案。避免循環定義的const Enum的最佳做法命名約定
所以,我們走吧。可以說我有:
public enum Color
{
Red,
Blue,
Green
}
public class BlueUnicorn
{
private const Color Color = Color.Blue;
}
「用於大多數枚舉類型單數名稱,但使用枚舉類型是位域複數的名字。」從Microsoft's Enumeration Type Naming Guidelines撤回檢查!
「考慮賦予屬性與其類型相同的名稱。」 retreived from Microsoft's Names of Type Members 檢查!
我應該使用恆定的,而不是隻讀,根據ReSharper的檢查!
但我得到一個編譯器錯誤。這很奇怪,對此沒有任何智能感知。 'BlueUnicorn.Color'常數值的評估涉及一個循環定義。
我覺得我在這裏的公約破解。應根據最佳實踐命名約定來命名該字段?
我可以建議將'Color'重命名爲'ColorChoice'用於enum還是BlueUnicorn const? – Kane
@Kane:這是什麼理由?我認爲它不合適。 –
這是有點偏離 - 儘管Resharper的建議,我會使用只讀而不是常量的任何公衆不是一個自然常數。 (就像一天或某事_never_改變)。原因:常量被複制並且未被引用。因此,如果上面的代碼位於ClassLibrary A中,並且exe B引用了A,並且您構建了,則Color.Blue值會被複制到exe B.這意味着如果您釋放了一個新版本的類lib,它將更改const值到綠色,你的exe將繼續使用藍色,直到你重新編譯它。 – JMarsch