2011-03-17 27 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; 
相关问题