在.NET中存储大量常量值的最佳方法是什么?

3
这基本上是一个设计问题:
我正在用C#重写一个基本上是用C++编写的应用程序。C++有这个很好的概念,称为头文件,可以保存许多已声明的常量值以供消费文件使用。
然而,在C#中我们没有头文件。我可能有两个选择:
1.创建一个类来保存很多常量值(不太标准)
2.在XML中存储数值(标准,但涉及很多解析麻烦)
哪个方案更好?还有其他我可能不知道的解决方案吗?

4
在C#中使用const值并没有什么“不太标准”的地方 - 这与C ++版本非常接近。使用LINQ to XML解析XML并不是“很麻烦”…它真的非常简单。这些是否真正是常量,还是有可能随时间改变?如果它们是真正的常量,我看不出XML有什么帮助。 - Jon Skeet
由于它们都在C++的.H文件中,更有可能它们都是真正的常量。 - Lost
更不用说,如果你的代码到处都充斥着常量,那么你可能需要重新考虑你的设计,除非你正在处理科学数据或类似情况。 - Federico Berasategui
你具体在谈论什么类型的值? - Federico Berasategui
@Californicated:没错,那么你对在C#中使用“const”有什么反对意见吗?这似乎是一个明显的类比...不过如果你能将它们放置在适当的类中(与值相关联),那就更好了。 - Jon Skeet
我对使用常量没有任何反对意见,我认为它们具有很大的价值。然而,虽然我没有反对,但我不确定定义一个类来保存一堆值是否是一个好的设计。这将把一个类视为数据存储器。但总共有35个常量,所以我认为这并不会太糟糕。 - Lost
1个回答

7

个人建议使用静态类,将所有值都放在其中。

public static class Constants
{
   public const int Ten = 10;
   public const int Twenty = 20;
   ....
}

编辑

正如@JonSkeet建议的那样,最好将这些值存储在它们所属的类中,但这可能并不总是可行的。


1
好的。我不太确定使用类来保存值是否是一个好主意。只需要确认一下 :) - Lost
4
除非必须使用特定的类别,否则最好将它们自然地放在其他类别中。但有时候并不是这样尽如人意。 - Jon Skeet
如果你存储的都是字符串,那么可以考虑使用.resx文件。这些文件被设计用来保存字符串“常量”,但同时也提供了更多的灵活性,比如能够切换到其他语言或文化。 - Chad McGrath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接