在C#项目中,事件的常量应该放在哪里

在C#项目中,事件的常量应该放在哪里,c#,oop,events,constants,coding-style,C#,Oop,Events,Constants,Coding Style,我对C#非常陌生,我有一个关于传统的问题: 与事件关联的常量应存储在何处 它们是否应该包含在我定义EventArgs的同一位置 作为一种解释,我想为一个名为“_困难”的私有字段定义不同的常量,并通过重写的EventArgs类的构造函数来设置 假设常数是, 公共常数int易=0,中=1,硬=2;(我假设命名约定都是大写) 或者,我可以创建一个类似于“难易Constants”的类,然后将它们插入其中 我只是好奇这个约定是什么,对于遵循OOP最有意义。约定是不这样做的。您所描述的将按惯例实现为一组命名

我对C#非常陌生,我有一个关于传统的问题:

与事件关联的常量应存储在何处

它们是否应该包含在我定义EventArgs的同一位置

作为一种解释,我想为一个名为“_困难”的私有字段定义不同的常量,并通过重写的EventArgs类的构造函数来设置

假设常数是, 公共常数int易=0,中=1,硬=2;(我假设命名约定都是大写)

或者,我可以创建一个类似于“难易Constants”的类,然后将它们插入其中


我只是好奇这个约定是什么,对于遵循OOP最有意义。

约定是不这样做的。您所描述的将按惯例实现为一组命名的整数常量,而不是一组命名的整数常量。

常量应在其使用中最常关联的对象附近或对象中声明。若常量的主要用途是创建自定义EventArg,那个么这听起来是定义它们的好地方。如果它们在任何地方都使用,通常建议使用公共或CommonUtil库


一个尖端;考虑为这些值创建一个枚举,而不是单独的常量。它们是一组相互关联、相互排斥的表示状态的值;枚举值的教科书定义。

这完全取决于代码的设置方式。在某些情况下,它可能位于项目或解决方案中的公共命名空间中


我有几个项目,它们位于一个公共名称空间中,即Company.common

由于您确实在添加EASY、MEDIUM、HARD等级别,它们彼此处于顺序级别,我希望使用一个
enum
。就像在其他语言中一样,您可以使用
公共枚举难度{EASY,MEDIUM,HARD}

但是你在哪里留下这样一个枚举?如果您希望在许多不同的EventArg中使用它,我建议您使用一些抽象基类:

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

然后,让所有EventArg从该类继承。

看起来更像是要枚举

    public enum Difficulty
{
   Easy,
   Medium,
   Hard
}

我将使用枚举:

public enum DifficultyLevel {
  Easy = 0,
  Medium = 1,
  Hard = 2
}
这样,所有的值都定义在一个结构中,该结构被很好地定义为连接到类型,而不是可以连接到任何对象的松散常量

将您的私有字段声明为:

private DifficultyLevel _difficulty;
指定如下值:

_difficulty = DifficultyLevel.Easy;
通过为枚举指定数值,如果需要,还可以将它们转换为已知整数值或从已知整数值转换为已知整数值:

_difficulty = (DifficultyLevel)1;

int level = (int)_difficulty;