c# 常量和字段

 更新时间:2012年10月29日 13:55:20   作者:  
常量:是一个特殊的符号,有一个从不变化的值
它的值是在编译时确定的。编译器将常量保存到程序集的元数据中,所有只能是编译器认识的基元类型作为常量。

常量被看成类的一部分,是看出静态成员。

代码引用一个常量符号,会在定义常量的元数据中查找该符号,提取之,并嵌入代码,生成的IL中是值本身。

在c#中使用的是const关键字。

字段:已一种数据成员,可以容纳任何的数据类型,不仅仅想常量一样只能存储基元类型。

CLR支持类型字段和实例字段

类型字段:用于容纳字段数据的动态内存是在类型对象中分配的,

而类对象是在类型加载到一个AppDomain中创建的。

通常是在引用该类型的任何方法首次进行JIT编译的时候。

实例字段:用于容纳字段数据的动态内存是在构造类型的实例时分配的。

由于字段存储在动态内存中,所以它们的值在运行时才获取,字段解决了常量存在版本控制的问题。


CLR支持readonly 字段 和 read/write字段

read、write字段可以在代码中多次改变。

readonly字段只能在构造器方法中写入,也就是在对象首次创建的时候。

编译器和验证机制会确保readonly字段不会在构造器以外的地方写入。

在c#中允许内联初始化语法来初始化类的字段。c#实际是在构造器中对字段进行初始化的,内联代码只是语法糖。

相关文章

  • C#匿名委托与Lambda表达式详解

    C#匿名委托与Lambda表达式详解

    这篇文章主要为大家详细介绍了C#匿名委托与Lambda表达式的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • C#命名空间与java包的区别分析

    C#命名空间与java包的区别分析

    这篇文章主要介绍了C#命名空间与java包的区别,较为详细的分析了C#命名空间与java包的相同点与不同点,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#实现农历日历的方法

    C#实现农历日历的方法

    这篇文章主要介绍了C#实现农历日历的方法,详细分析了使用C#实现农历日历的完整步骤,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • C#调用SQL Server中有参数的存储过程

    C#调用SQL Server中有参数的存储过程

    这篇文章介绍了C#调用SQL Server中有参数存储过程的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • C#操作INI文件的示例代码

    C#操作INI文件的示例代码

    这篇文章主要为大家详细介绍了C#操作INI文件的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随上班一起学习一下
    2023-12-12
  • WinFrom中label背景透明的实现方法

    WinFrom中label背景透明的实现方法

    这篇文章主要介绍了WinFrom中label背景透明的实现方法,方法简单实用,是C#程序设计中非常实用的技巧,需要的朋友可以参考下
    2014-09-09
  • C#中GraphicsPath的Widen方法用法实例

    C#中GraphicsPath的Widen方法用法实例

    这篇文章主要介绍了C#中GraphicsPath的Widen方法用法,实例分析了Widen方法的使用技巧,需要的朋友可以参考下
    2015-06-06
  • 解析如何正确使用SqlConnection的实现方法

    解析如何正确使用SqlConnection的实现方法

    本篇文章对如何正确使用SqlConnection的实现方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C#中的数组用法详解

    C#中的数组用法详解

    本文详细讲解了C#中的数组用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#入门之结构类型Struct

    C#入门之结构类型Struct

    这篇文章介绍了C#入门之结构类型Struct,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05

最新评论