c#常量和字段
c# 常量
2023-06-13 09:14:40 时间
它的值是在编译时确定的。编译器将常量保存到程序集的元数据中,所有只能是编译器认识的基元类型作为常量。
常量被看成类的一部分,是看出静态成员。
代码引用一个常量符号,会在定义常量的元数据中查找该符号,提取之,并嵌入代码,生成的IL中是值本身。
在c#中使用的是const关键字。
字段:已一种数据成员,可以容纳任何的数据类型,不仅仅想常量一样只能存储基元类型。
CLR支持类型字段和实例字段
类型字段:用于容纳字段数据的动态内存是在类型对象中分配的,
而类对象是在类型加载到一个AppDomain中创建的。
通常是在引用该类型的任何方法首次进行JIT编译的时候。
实例字段:用于容纳字段数据的动态内存是在构造类型的实例时分配的。
由于字段存储在动态内存中,所以它们的值在运行时才获取,字段解决了常量存在版本控制的问题。
CLR支持readonly字段和read/write字段
read、write字段可以在代码中多次改变。
readonly字段只能在构造器方法中写入,也就是在对象首次创建的时候。
编译器和验证机制会确保readonly字段不会在构造器以外的地方写入。
在c#中允许内联初始化语法来初始化类的字段。c#实际是在构造器中对字段进行初始化的,内联代码只是语法糖。
常量被看成类的一部分,是看出静态成员。
代码引用一个常量符号,会在定义常量的元数据中查找该符号,提取之,并嵌入代码,生成的IL中是值本身。
在c#中使用的是const关键字。
字段:已一种数据成员,可以容纳任何的数据类型,不仅仅想常量一样只能存储基元类型。
CLR支持类型字段和实例字段
类型字段:用于容纳字段数据的动态内存是在类型对象中分配的,
而类对象是在类型加载到一个AppDomain中创建的。
通常是在引用该类型的任何方法首次进行JIT编译的时候。
实例字段:用于容纳字段数据的动态内存是在构造类型的实例时分配的。
由于字段存储在动态内存中,所以它们的值在运行时才获取,字段解决了常量存在版本控制的问题。
CLR支持readonly字段和read/write字段
read、write字段可以在代码中多次改变。
readonly字段只能在构造器方法中写入,也就是在对象首次创建的时候。
编译器和验证机制会确保readonly字段不会在构造器以外的地方写入。
在c#中允许内联初始化语法来初始化类的字段。c#实际是在构造器中对字段进行初始化的,内联代码只是语法糖。
相关文章
- c# mysql executenonquery_C#与数据库访问技术之ExecuteNonQuery方法
- C# 简介
- c#面试题抽象类和接口的区别-金三银四面试:C#程序员经常遇到的30道基础面试题,想你所想
- 【Unity3D】Unity 脚本 ① ( 创建 C# 脚本 | Visual Studio 2019 中打开 C# 脚本 | 编译 C# 脚本 | 挂载 C# 脚本到游戏物体 | 运行脚本 )
- C# 读取EXCEL文件的三种经典方法详解编程语言
- ASP.net(c#)生成html的几种解决方案[思路]
- C#发送HttpPost请求来调用WebService的方法
- C#TreeView无限级别分类实现方法
- C#实现写入与读出文本文件的实例代码
- c#栈变化规则图解示例(栈的生长与消亡)
- C#使用MailAddress类发送html格式邮件的实例代码
- C#正则表达式分解和转换IP地址实例(C#正则表达式大全c#正则表达式语法)
- c#检测端口是否被占用的简单实例
- c#只读字段和常量的区别,以及静态构造函数的使用实例
- C#模拟Http与Https请求框架类实例
- C#的FileInfo类实现文件操作实例
- C#实现闹钟AlarmClock实例代码
- C#使用RenderControl将GridView控件导出到EXCEL的方法
- C#中WebBroeser控件用法实例教程