常数(constant)和只读(readonly)的区别

在继续实现代码之前,理解C#编程的概念是很重要的。在我们开始讨论const和readonly之间的区别之前,让我们先了解一下关键字以及它们在程序中的用法。这两个都是C#编程中最常用的关键字,基本上用途相同。然而,这两个关键词是非常不同的彼此。Const是一个保留字,用于表示常量值,它指定编译后不能修改值,而readonly是一个修饰符,可以在字段上使用,其值可以在运行时更改。让我们看看const和...

在继续实现代码之前,理解C#编程的概念是很重要的。在我们开始讨论c***t和readonly之间的区别之前,让我们先了解一下关键字以及它们在程序中的用法。这两个都是C#编程中最常用的关键字,基本上用途相同。然而,这两个关键词是非常不同的彼此。C***t是一个保留字,用于表示常量值,它指定编译后不能修改值,而readonly是一个修饰符,可以在字段上使用,其值可以在运行时更改。让我们看看c***t和readonly之间的一些关键区别。

常数(c***tant)和只读(readonly)的区别

什么是常数(a c***t)?

C***t指的是一个常量变量,在声明期间,该变量的值只需赋值一次。当在声明期间使用关键字c***t时,它将变为常量,这意味着该值将保持不变,并且在整个程序中不能更改。它更像是一个保留字,指定编译后不能修改值。默认情况下,常量是隐式静态的,因此可以使用“Classname.VariableName”用类名调用它。常量值也称为文字。它可以是任何基本数据类型,例如整数常量、浮点常量或字符串文本。

常数(c***tant)和只读(readonly)的区别

什么是只读(readonly)?

Readonly关键字是一个修饰符,只能用于字段,不能用于局部变量。只读字段可以在声明时初始化,也可以在同一类的构造函数中初始化,因此根据所使用的构造函数,程序的不同执行的值可能不同。readonly关键字指定对象的实例变量是不可修改的,并且在声明之后对其进行任何修改都会导致编译错误。直到执行之后,变量才变得不可修改。变量设置为只读,以防止在构造代码后意外修改代码。

 

常量和只读之间的差异

  1. 基本

常量(c***t)关键字只是不可变变量,其值只能在编译时初始化。这些常量值也称为文字。它只允许我们指定变量是否可修改。简单地说,常量是隐式静态的,在将常量用于程序之前,应该初始化它们。另一方面,Readonly关键字是一个可用于字段的修饰符,其值可以在运行时更改。它防止字段被更改,并且可以通过引用变量设置字段的值。

  1. 初始化

c***t默认为静态的,变量声明时应该为其分配的值,这意味着仅在编译时分配值。使用“c***t”关键字声明常量。常量字段的初始化必须是常量表达式,不能修改。简单地说,c***t是编译时常数。另一方面,只读字段只能在方法内的类级别初始化,初始化后不能修改字段。换句话说,readonly变量可以在声明时或构造函数内部初始化。

  1. 内存分配

常量值作为编译时替换直接放入代码中。编译器将常量值放在定义常量的程序集元数据中,并在初始化后将该值嵌入IL代码本身,因此在运行时不需要内存来分配常量。Readonly值不是常量,它存储在加载程序堆中,在加载类型之前无法为其分配内存。只读字段存储在动态内存中,因此只能在运行时获取值。

  1. 二进制版本控制

尽管这两个关键字的用途几乎相同,但它们具有不同的二进制版本控制语义。当表达式引用常量时,编译器会在编译时嵌入该值。因此,如果在不同的程序集中使用该值,则需要更新原始程序集并更改该值。程序集中的更改在重新编译之前不会反映出来。只有在运行时表达式引用只读字段时才会获取该值。如果值在另一个程序集中更改,则这些更改将在加载程序集后立即反映在程序集中,而无需重新编译它。

c***t与readonly:比较图

常数(c***tant)和只读(readonly)的区别

总结 - 常数(of c***t) vs. 只读(readonly)

这两个关键字用于同一件事,即声明一个成员,以便在整个程序中不能更改值。但是,c***t关键字与readonly关键字有很大的不同。C***t是一个常量变量,其值应该在编译时初始化,而readonly字段只能在类级别初始化,无论是在声明时还是在构造函数内部。C***t是编译时常量,而readonly字段是只读的。C***tance变量可以使用“Classname.VariableName”访问,而只读变量可以使用“InstanceName.VariableName”访问。此外,常量变量可以在方法中声明,而只读字段不能在方法中声明。

 

  • 发表于 2021-06-25 14:54
  • 阅读 ( 285 )
  • 分类:IT

你可能感兴趣的文章

通用气体常数(universal gas constant)和特征气体常数(characteristic gas constant)的区别

关键区别-通用气体常数与特征气体常数 气相是物质可以存在的三种主要相之一。它是物质三种状态中最可压缩的状态。在正常情况下,其他元素中只有11种元素以气体的形式存在。然而,“理想气体定律”给了我们一个可以...

  • 发布于 2020-09-22 22:50
  • 阅读 ( 578 )

介电常数(dielectric constant)和相对介电常数(relative permittivity)的区别

介电常数和相对介电常数的关键区别在于介电常数是指介电物质的相对介电常数,而相对介电常数是指与真空的介电常数相比的物质的介电常数。 电容器技术中使用的术语是介电常数和介电常数;例如,使用具有不同介电常...

  • 发布于 2020-09-25 22:08
  • 阅读 ( 1233 )

化学位移(chemical shift)和耦合常数(coupling constant)的区别

化学位移和耦合常数的关键区别在于,化学位移描述的是由于化合物的电子屏蔽或脱屏蔽而引起的核磁共振吸收位置的变化,而耦合常数则是指一对质子之间的相互作用。 化学位移和耦合常数都是给出与核磁共振有关的数值...

  • 发布于 2020-10-13 22:56
  • 阅读 ( 429 )

平衡常数(equilibrium constant)和形成常数(formation constant)的区别

平衡常数与生成常数的关键区别在于,平衡常数是平衡时产物浓度与反应物浓度之比,而生成常数是由其组分形成配位化合物的平衡常数。 平衡常数有助于解释不同平衡态的行为。形成常数是一种平衡常数,对配位化合物的...

  • 发布于 2020-10-15 00:59
  • 阅读 ( 220 )

摩尔溶解度(molar solubility)和产品溶解度常数(product solubility constant)的区别

摩尔溶解度和产品溶解度常数之间的关键区别在于摩尔溶解度描述了每升溶液中物质的溶解,而产品溶解度常数描述了固体物质在水溶液中的溶解。 摩尔溶解度和产物溶解度常数都是描述物质在溶液中溶解的化学概念。我们...

  • 发布于 2020-10-15 10:26
  • 阅读 ( 1107 )

平衡常数(equilibrium constant)和速率常数(rate constant)的区别

平衡常数和速率常数的关键区别在于,平衡常数用反应物和产物的浓度来表示,而速率常数用反应物或产物的浓度来表示。 平衡常数和速率常数都是特定反应的常数。这意味着,在一个恒定的反应中,温度、平衡常数的值和...

  • 发布于 2020-10-15 10:42
  • 阅读 ( 347 )

平衡常数(equilibrium constant)和平衡位置(equilibrium position)的区别

关键区别-平衡常数与平衡位置 平衡常数是表示反应混合物在其平衡状态下的产物和反应物数量之间关系的数字,而平衡位置是平衡的正向反应等于反向反应的时刻。这是平衡常数和平衡位置的关键区别。 平衡是一个系统同...

  • 发布于 2020-10-19 02:44
  • 阅读 ( 568 )

酸电离常数(acid ionization constant)和碱基电离常数(base ionization constant)的区别

关键区别-酸电离常数与碱电离常数 酸离子化常数(Ka,也称为酸离解常数)定量测量了酸分子与其电离形式之间的平衡。同样,碱离解常数(Kb,或碱离解常数)可定量测量碱分子与其电离形式之间的平衡。酸电离常数和碱...

  • 发布于 2020-10-19 03:06
  • 阅读 ( 436 )

逐步(stepwise)和总稳定常数(overall stability constants)的区别

关键区别-逐步与整体稳定常数 稳定常数是指溶液中形成复杂化合物的平衡常数。这是一种测量这些过渡金属离子配合物稳定性的方法。与其他平衡常数一样,稳定常数也与温度有关。稳定常数的定义为“过渡金属离子与某些...

  • 发布于 2020-10-19 14:00
  • 阅读 ( 500 )

反应速率(reaction rate)和速率常数(rate constant)的区别

反应速率和速率常数之间的关键区别在于,反应速率是反应物转化为产物的速度,而速率常数是指在给定温度下化学反应速率与反应物浓度或浓度乘积的比例系数反应物。 当一个或多个反应物转化为产物时,它们可能经历不...

  • 发布于 2020-10-24 12:11
  • 阅读 ( 995 )
1120026dm
1120026dm

0 篇文章

相关推荐