您如何管理每个c#类的常量?
在所有应用程序中,始终会使用一些常量值 我不喜欢在我的应用程序中用每种代码对这些值进行硬编码,因为这会显著降低可维护性 我有两个选择:您如何管理每个c#类的常量?,c#,asp.net,resources,constants,C#,Asp.net,Resources,Constants,在所有应用程序中,始终会使用一些常量值 我不喜欢在我的应用程序中用每种代码对这些值进行硬编码,因为这会显著降低可维护性 我有两个选择: 在目标类中创建一个内部常量类,并添加公共常量值,例如 内部静态类常量 { 公共常量字符串IdAttribute=“id”; } 或 创建一个资源文件(.resx)并在其中存储我的常量值和公式 我在这里的应用程序中使用了第二种方法。我在使用资源文件时遇到的一个问题是,我无法对它们使用.NET4.0可选参数功能 e、 g.以下选项不起作用: public void
public void DoSomething(string id = Resources.Constants.Id)
{
// ..
}
错误在于运行时未确定Id的值
基本上,您会使用和推荐哪种方法来管理每个类的常量?为什么?
我目前的方法是,如果我有只应该在一个类中使用的常量,我将在该类中创建一个静态常量类。如果我的常量要在多个类或项目中使用,我会将它们放在一个资源文件中,例如PageUrls.resx
谢谢,就我个人而言,我宁愿在它们逻辑上所属的类中定义常量,就像(比如)DateTime.MinValue一样 然后,一般来说,公开这些常量有点“代码味道”,这意味着一些耦合可能应该以更好的方式表达。在代码允许的情况下,将它们设置为私有(或内部)显然没有害处
然而,有时总的常量是全局的。这些通常是实际配置,应该这样对待。我个人使用的资源主要用于呈现给用户的常量。主要的优势是可以将其本地化
对于内部常量,我更喜欢变量。当它们被许多类共享时,我会将它们放入一个常量类,否则在需要它们的类中const比静态只读更好地使用内存。@William:
public const
变量从其他程序集访问时可能会导致维护问题。看看链接的答案。(可能“internal”一词是我的一个不幸选择-我的意思是没有向用户提供常量)我理解const create对于其他程序集的问题,如果它的值将来会更改,但是常量是常量,并且不应该更改,因此提出的问题是无效的,因为它首先是一个设计问题。若您有常数use const,若您并没有常数,并且您只需要一个可能更改的初始化值,那个么使用静态只读。