我在项目中使用了一些常量。
private const int refercePosition = 0.3;
我将常量转移到我项目的设置文件中(即进入App.config),然后在我的项目中使用。
private static int refPos = Properties.Settings.Default.referencePosition;
将变量decalre变为静态而不是常量是一种很好的做法吗? 我的项目中还有大约10个其他常量,我也是这样做的。
顺便说一句,既然App.config变量是运行时可配置的,但确实将变量声明为静态失败?
答案 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将使用常量,则应该使用常量。当需要运行时计算时,或者如果外部消费者是一个因素,则应使用静态只读字段。