将const变量更改为静态变量

时间:2012-03-23 05:15:54

标签: c#

我在项目中使用了一些常量。

private const int refercePosition = 0.3;

我将常量转移到我项目的设置文件中(即进入App.config),然后在我的项目中使用。

private static int refPos = Properties.Settings.Default.referencePosition;

将变量decalre变为静态而不是常量是一种很好的做法吗? 我的项目中还有大约10个其他常量,我也是这样做的。

顺便说一句,既然App.config变量是运行时可配置的,但确实将变量声明为静态失败?

4 个答案:

答案 0 :(得分:2)

由于现在可以在运行时修改refPos,因此它不是替代品。如果那是你的目的,那么

private static readonly int refPos = Properties.Settings.Default.referencePosition;

在运行时使refPos只读。更接近const的性质。

您可能还想查看singleton pattern

答案 1 :(得分:1)

主要区别在于const不能在运行时更改,但是应用程序可以在运行时更改静态属性。 因此,如果值永远不会改变,那么它可以是一个const ...

答案 2 :(得分:1)

常量本质上是静态的,因此在不能将值声明为运行时常量的情况下,从const转换为static readonly并不罕见。另请注意,在运行时只能更改User作用域设置。如果这些设置为Application作用域,则不会有任何区别。如果您要使用User范围设置,我建议您直接在代码中使用它们,因为正如您所说,然后可以在运行时更改。

答案 3 :(得分:0)

当静态而不是常量?
当值不太可能改变时,或者如果没有外部apps / libs将使用常量,则应该使用常量。当需要运行时计算时,或者如果外部消费者是一个因素,则应使用静态只读字段。