C#-创建具有通用定义/常量/枚举等的代码文件? 在C++中,我经常创建一个包含常量、枚举、α定义、s、宏等的代码文件

C#-创建具有通用定义/常量/枚举等的代码文件? 在C++中,我经常创建一个包含常量、枚举、α定义、s、宏等的代码文件,c#,C#,C#中的最佳实践是什么?我是否创建一个静态类并用该数据填充它?或者有其他方法吗?枚举不需要静态类-它们可以是顶级的(意思是:命名空间级别)。是的,您需要一个常量类(一个静态类就足够了),但我倾向于有多个类——每个意图一个。没有必要把它们挤在一起 在C#中,任何#define都只适用于该文件,因此为它们创建类没有多大意义(将它们放在项目/构建脚本中)。宏不存在。 我已经反对C++中的那个练习。 在需要的地方定义这些东西,而不是在一个“转储”文件中。随着时间的推移,这种文件往往会积累大量未使用的内容

C#中的最佳实践是什么?我是否创建一个静态类并用该数据填充它?或者有其他方法吗?

枚举不需要静态类-它们可以是顶级的(意思是:命名空间级别)。是的,您需要一个常量类(一个静态类就足够了),但我倾向于有多个类——每个意图一个。没有必要把它们挤在一起


在C#中,任何
#define
都只适用于该文件,因此为它们创建类没有多大意义(将它们放在项目/构建脚本中)。宏不存在。

我已经反对C++中的那个练习。
在需要的地方定义这些东西,而不是在一个“转储”文件中。随着时间的推移,这种文件往往会积累大量未使用的内容。而且很难清理,因为谁知道,代码的哪些部分正在使用它…

通常有一个类或结构,您的枚举等适用于该类或结构。我把它放在那个档案里,在班级下面。从代码中使用的任何地方都可以很容易地找到定义。如果可能,我会尝试将命名空间(或其他逻辑分组)的所有类似实体放在同一个位置。

如果您有一些要全局定义的项,比如一组字符串,我会使用具有静态属性的静态类。如果你打算在不止一个地方使用它,我会这么做

例如,如果只在一个地方使用定义的字符串,那么我将把它放在引用它的类中

使用属性且不公开成员非常重要。我发现C++开发人员在移动到C时已经工作了,他们公开成员,因为他们不需要“属性的特殊逻辑”。当您最初编写代码时,这可能是正确的。如果您将它作为一个成员公开,并且需要执行特殊的逻辑,那么您必须以一种主要的方式进行重构。而如果从属性开始,则可以添加逻辑而无需重构


对于枚举,我在表示名称空间的文件夹中定义一个Enum.cs文件。而不是在静态类中定义它们。


宏在C#中不存在

#定义
定义非常有限,仅真正用于条件编译。您应该改为使用项目属性(或在msbuild脚本中)来定义它们

枚举
枚举应分别放入各自的单独文件中。它们不需要在类中,它们直接进入名称空间

常数
就我个人而言,我尽量将常量保持在最小值,并且尽可能在类中保持私有

如果您必须使它们公开并全局可用,请使用静态类(如果它们直接与一个类相关,则使用普通类)。试着根据它们的用途将它们分组

如果您讨论字符串常量,则可以考虑使用资源文件,而不是它们是可本地化的字符串。