C#静态和常量有什么区别?

One*_*key 5 c# variables static constants

正如它所说.我将在我正在编写的程序中定义一个常量或静态值,并且对于为什么要使用其中一个而感到困惑.作为我在询问这个问题时遇到的唯一相关问题涉及想要立即标记静态和常数的人,我怀疑我不是唯一一个对这些概念有点失落的人.

那么为什么我会使用静态,为什么我会使用常量?有什么区别?他们是同义词吗?如果是这样,那很酷,但如果不是,为什么不呢?谢谢!

pdr*_*pdr 11

const在编译时处理.每个对该常量的引用都被常量值替换.

static是非常不同的.它是一个仅存在一次但属于该类型的所有对象的变量.它可以编辑,除非标记为readonly(或给定一个getter但没有setter).如果它被标记为readonly那么它本质上是一个常量,但它在运行时处理,而不是由编译器处理.


Ode*_*ded 5

首先,它们不是同义词.

  • static将成员标记为属于该类型.
  • const表示无法更改成员.该值在编译时确定,并替换它出现的任何位置.

为了更好地理解如何static使用,请阅读Static Classes and Static Members.