static 和 const 变量之间的区别

Difference between static and const variables

"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;
    }
}

const 变量在编译后不能再改变。它们适用于真正恒定的事物(即 pi)

static 成员是共享内存,可由特定 class 的所有实例访问,如果使用 public 等访问修饰符则更多(这些可能感觉像语言中的全局变量像 javascript)。静态成员的行为就像可以随时重新分配的普通变量。

在你的情况下,如果保证数字永远不会改变,那么将它们设为常量。如果它们确实发生了变化,您将不得不使用新值重新编译程序。


哪个更好?如果您使用 const,那么文字值将被烘焙到程序集中并提供性能提升。

如果值需要更改,那么更改源代码和重新编译所花费的时间会很快破坏这种边际性能提升。

const是一个常数值,不能改变。它被编译到程序集中。

static 表示它是一个与实例无关的值,并且可以在 运行 时更改(因为它不是 readonly)。

因此,如果值永远不会更改,请使用常量。

const 和 readonly 对数据成员执行类似的功能,但它们有一些重要的区别。 常量成员在编译时定义,不能在运行时更改。常量使用 const 关键字声明为字段,并且必须在声明时进行初始化。

static修饰符用于声明静态成员,这意味着该成员不再绑定到特定对象。该值属于 class,此外无需创建 class 的实例即可访问该成员。静态字段和事件只有一份,静态方法和属性只能访问静态字段和静态事件