2011-03-17 29 views
4

我非常新的C#去和我約定的問題:應該在哪裏常數事件在C#項目

應該在哪裏儲存所有與事件相關的常數?

它們是否應該包含在我定義EventArgs的相同位置?

作爲解釋,我想爲一個名爲「_difficulty」的私有字段定義不同的常量,並通過重寫的EventArgs類的構造函數來設置。假設常量爲 public const int EASY = 0,MEDIUM = 1,HARD = 2; (我假設命名約定全是大寫)

或者,我可以創建一個類似「DifficultyConstants」的類,然後將它們插入到那裏。

我只是好奇這個約定是什麼,並且會對跟隨OOP最有意義。

回答

7

當你真的添加水平像EASY,中,硬,這是從海誓山盟順序水平,我希望一個enum到使用。正如其他語言一樣,您可以使用public enum Difficulty {EASY, MEDIUM, HARD}

但你在哪裏離開這樣的枚舉?如果你想讓它在許多不同的EventArgs的使用,我會建議使用一些抽象基類:

public class LevelEventArgs : EventArgs 
{ 
    public enum Difficulty 
    { 
     EASY, 
     MEDIUM, 
     HARD 
    } 
} 

然後,讓所有的EventArgs從該類繼承。

12

約定是不這樣做。你所描述的將按照慣例實現爲enum而不是一組命名的整數常量。

+0

我完全同意這裏 – MUG4N 2011-03-17 18:08:56

+0

同意。謝謝你的提示。 – kachingy123 2011-03-17 20:31:03

2

常量應該在它們最常使用的對象的附近或對象中聲明。如果您主要使用常量來創建自定義EventArgs,那聽起來就像是定義它們的好地方。如果它們在任何地方都使用,通常建議使用Common或CommonUtil庫。

單提示;考慮爲這些值創建一個枚舉,而不是單個常量。它們是一組相關的,相互排斥的一組值,表示狀態; enum值的教科書定義。

1

這一切都取決於您的代碼是如何設置的。在某些情況下,它可能位於項目或解決方案中的通用名稱空間中。

我有幾個項目中很常見的命名空間,即Company.Common

1

看起來更像你想要一個枚舉

public enum Difficulty 
{ 
    Easy, 
    Medium, 
    Hard 
} 
3

我會用,而不是一個枚舉:

public enum DifficultyLevel { 
    Easy = 0, 
    Medium = 1, 
    Hard = 2 
} 

這樣,所有的值都在結構中定義的被很好地定義爲連接類型,而不是可以連接到任何東西的鬆散常量。

聲明私有字段:

private DifficultyLevel _difficulty; 

指定這樣的值:

_difficulty = DifficultyLevel.Easy; 

通過爲枚舉指定的數值,也可以將它們轉換爲從已知的整數值如果您需要:

_difficulty = (DifficultyLevel)1; 

int level = (int)_difficulty; 
相關問題