我有一个使用枚举的类,该枚举当前在其自己的文件中,这似乎很浪费。
关于将枚举放置在使用它们的文件的名称空间中的一般看法是什么?还是应该将枚举真正存在于自己的CS文件中?
编辑
我应该提到的是,尽管所讨论的类使用了这些枚举,但是外部调用者也是如此。换句话说,另一个类可以设置这些枚举。因此,它们不会在班级内部使用,否则此问题将变得毫无道理。
我有一个使用枚举的类,该枚举当前在其自己的文件中,这似乎很浪费。
关于将枚举放置在使用它们的文件的名称空间中的一般看法是什么?还是应该将枚举真正存在于自己的CS文件中?
编辑
我应该提到的是,尽管所讨论的类使用了这些枚举,但是外部调用者也是如此。换句话说,另一个类可以设置这些枚举。因此,它们不会在班级内部使用,否则此问题将变得毫无道理。
Answers:
我不会说“浪费”(多余的文件要多少钱?),但这通常很不方便。通常,有一个类与枚举关系最密切,我将它们放在同一文件中。
这实际上只是一个偏好问题。
我更喜欢将每个枚举放在自己的文件中(无论每个接口,类和结构如何,无论大小如何)。当我来自其他解决方案或没有相关类型的引用时,这使他们更容易找到。
在每个文件中放置一种类型也可以更轻松地识别源代码管理系统中的更改而无需区别。
这完全是风格问题。我倾向于做的是Enums.cs
在解决方案中有一个文件,其中收集了枚举声明。
但是F12无论如何,它们通常都是通过密钥找到的。
enum
而不是它位于包含相关类的文件中,但不一定是唯一使用该类的类
...enums have a relation to classes mostly.
。这是你让我迷路的地方。请举一个例子,说明如何处理与几个类有关系的枚举?
AnchorStyle
整个UI库中都使用了一个枚举,则通常还需要一个UI子命名空间和相应的文件夹。然后,将其放置在AnchorStyle.cs
可以轻松找到的UI文件夹中的文件中,而不是通常命名为“ Enums.cs”的文件中。
要问自己的问题是:关于C#中的枚举类型,是否有什么事情与我创建的所有其他类型有所不同?
如果枚举是公共的,则应像其他任何公共类型一样对待它。如果它是私有的,则使用它声明为类的嵌套成员。没有令人信服的理由将两个公共类型放在同一个文件中,仅仅是因为一个是枚举。它是公共类型这一事实至关重要。类型的味道没有。
将每种类型(类,结构,枚举)放在其自己的文件中的另一个优点是源代码管理。您可以轻松获取该类型的整个历史记录。
通常,我希望枚举与Class放在同一个文件中,而Class很有可能是其属性。例如,如果我有一个类,Task
那么枚举TaskStatus
将在同一文件中。
但是,如果我的枚举具有更一般的性质,则可以根据上下文将它们保留在各种文件中。
如果您使用Visual Studio的USysWare文件浏览器外接程序,则可以在解决方案中快速找到特定名称的文件。想象一下,在一个巨大的解决方案中查找的枚举不在自己的文件中,而是埋在某个文件中。
对于小型解决方案,这无关紧要,但是对于大型解决方案,将类和枚举保留在它们自己的文件中变得更加重要。您可以快速找到它们,对其进行编辑等。我强烈建议您将枚举放入自己的文件中。
并且如前所述...一个文件最终只剩下几个kb是多么浪费?
一个解决方案中有多个项目。然后更好地创建另一个项目Utilities
。然后创建一个Folder \Enumerations
并创建一个nested static class
。然后分配每个静态类,在其中将创建与项目名称相对应的枚举。例如,您有一个名为DatabaseReader和DatabaseUsers的项目,则可以将静态类命名为
public static class EnumUtility {
#region --Database Readers Enum
public static class EnumDBReader {
public enum Actions { Create, Retrieve, Update, Delete};
}
#endregion
#region --Database Users Enum
public static class EnumDBUsers {
public enum UserIdentity { user, admin };
}
#endregion
}
然后,将在其上声明可在每个项目的整个解决方案中使用的整个枚举。使用#region
分隔每个关注点。这样,查找任何枚举会更容易