【发布时间】:2019-12-25 03:38:40
【问题描述】:
我们都知道静态和常量之间的区别。有人可以帮我理解所有的相似之处吗?
【问题讨论】:
-
我在发布我的问题之前已经阅读了这篇文章。它只说明不同之处,而不是相似之处。
-
那么,所有除了差异都是相似?
-
您到底在寻找什么信息?
标签: c#
我们都知道静态和常量之间的区别。有人可以帮我理解所有的相似之处吗?
【问题讨论】:
标签: c#
唯一可以说的“相似之处”是 const 是隐式静态的,因此不能显式标记为这样。
内存方面的 const 比 static 稍微有效一些,因为它跳过了对指针的任何需求。静态仍然作为内存中的值存在,可以读取和(至少在理论上)写入。每次使用静态变量时,都会放置一个指向该实例的指针,并在运行时解析。
同时,常量只是一个原始值,事实上是硬编码的。 const 的每次使用都与写它的字面值相同。这有利于原语(因为值比指针 + 值更便宜)。
我不是 100% 确定类引用上的 const 实现。我猜在这种情况下它实际上更像是一个只读静态。
在实践中,您会遇到比常量更多的只读静态变量。例如,所有semi-constant fields on the Path class 都是只读静态的。常量(除非我们谈论 Enums)在运行时或其他访问您内容的代码中几乎没有价值。
【讨论】: