声明全局变量时,“static”和“const”之间有什么区别;
namespace General
{
public static class Globals
{
public const double GMinimum = 1e-1;
public const double GMaximum = 1e+1;
}
}
哪一个更好(考虑到这些变量永远不会改变)
namespace General
{
public static class Globals
{
public static double GMinimum1 = 1e-1;
public static double GMaximum1 = 1e+1;
}
}
答案 0 :(得分:10)
const 并且readonly对数据成员执行类似的功能,但它们有一些重要的区别。 常量成员在编译时定义,不能在运行时更改。常量使用const关键字声明为字段,必须在声明时初始化。
static 修饰符用于声明静态成员,这意味着该成员不再绑定到特定对象。该值属于该类,另外可以在不创建类实例的情况下访问该成员。只存在静态字段和事件的一个副本,静态方法和属性只能访问静态字段和静态事件
答案 1 :(得分:7)
const
个变量无法更改。它们适用于真正恒定的事物(即pi)
static
成员是共享内存,可以被特定类的所有实例访问,如果使用像public这样的访问修饰符,则会更多(这些可能与javascript等语言中的全局变量一样)。静态成员的行为类似于可以在任何时候重新分配的普通变量。
在您的情况下,如果保证数字永远不会改变,那么将它们设为const。如果它们确实发生了变化,则必须使用新值重新编译程序。
哪一个更好?如果使用const
,那么文字值将被加入到程序集中并提供性能提升。
如果值需要更改,那么更改源和重新编译所需的时间很快就会破坏这种边际性能提升。
答案 2 :(得分:3)
const
是一个常量值,无法更改。它被编译到程序集中。
static
表示它是一个与实例无关的值,可以在运行时更改(因为它不是readonly
)。
因此,如果值永远不会更改,请使用consts。