c# - C# 中的 const 和 static 有什么区别?

标签 c# static constants

我很想知道 const 变量和 static 变量之间的区别。

const 变量是否也总是static?它们有什么区别?

最佳答案

const 字段只能保存值类型或 System.String。它们在编译时必须是不可变的和可解析的。

static readonly 字段可以而且通常确实包含引用类型,引用类型(字符串除外)只能在运行时创建。这些可以(但不应该)是可变类型;唯一不能改变的是引用本身。

如果您需要维护一组引用类型的“常量”实例,通常使用一组public static readonly 字段来实现,例如System.Drawing.SystemColors 的成员。 .

最后但同样重要的是,readonly 字段的初始化可以推迟到构造函数执行时进行,这意味着即使它只能写入 一次,它并不总是必须用完全相同的值初始化。用 const 声明的真常量只能有一个值(在编译时指定)。

关于c# - C# 中的 const 和 static 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2512946/

相关文章:

c# - 从列表中返回元组计数

c# - 为什么常量可以隐式转换而静态只读字段不能?

javascript - jslint --edition=latest 意外的 ES6 功能。常量

c# - ASP.NET MVC 4 如何使用自定义 membershipprovider 和 roleprovider 实现 Oauth

c# - Hql 的计数哪里出了问题

c# - 不一致的可访问性字段类型调用静态类中的静态字段

c# - 如何在 C# 中传递 const 引用?

c++ - 无法从可转换类型初始化非常量引用

c# - 不使用扩展方法选择 XML 元素

static - 从另一个静态方法调用 trait 静态方法 (rust)