静态常量:是指编译器在编译时候会对常量进行解析,并将常量的值替换成初始化的那个值。
动态常量的值则是在运行的那一刻才获得的,编译器编译期间将其标示为只读常量,而不用常量的值代替,这样动态常量不必在声明的时候就初始化,而可以延迟到构造函数中初始化。
const修饰的常量是上述中的第一种,即静态常量;而readonly则是第二种,即动态常量。那么区别可以通过静态常量与动态常量的特性来说明:
1、const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化
2、const修饰的常量在编译期间就被解析,即常量值被替换成初始化的值;readonly修饰的常量则延迟到运行的时候
3、const修饰的常量注重的是效率;readonly修饰的常量注重灵活
4、const修饰的常量没有内存消耗;readonly因为需要保存常量,所以有内存消耗
5、const只能修饰基元类型、枚举类、或者字符串类型;readonly却没有这个限制
https://www.cnblogs.com/aehyok/p/3529079.html
C# readonly与const区别的更多相关文章
-
readonly和const区别
常量和只读变量的区别 const string name="Xuj"; readonly string name; 1.常量是不可改变的,只读变量只能在构造方法中才能改变其值. 2 ...
-
C#基本知识点-Readonly和Const的区别
什么是静态常量(Const)和动态常量(Readonly) 先解释下什么是静态常量(Const)以及什么是动态常量(Readonly). 静态常量(Const)是指编译器在编译时候会对常量进行解析 ...
-
readonly和const的区别
readonly与const的区别1.const常量在声明的同时必须赋值,readonly在声明时可以不赋值2.readonly只能在声明时或在构造方法中赋值(readonly的成员变量可以根据调用不 ...
-
c#:readonly与const的区别
readonly与const的区别: 1.初始化:const 字段只能在该字段的声明中初始化. readonly 字段可以在声明或构造函数中初始化. 2.值: const 字段是编译时常量(con ...
-
编写高质量代码改善C#程序的157个建议——建议6: 区别readonly和const的使用方法
建议6: 区别readonly和const的使用方法 很多初学者分不清readonly和const的使用场合.在我看来,要使用const的理由只有一个,那就是效率.但是,在大部分应用情况下, “效率” ...
-
C# readonly和const的区别
什么是静态常量(Const)和动态常量(Readonly) 先解释下什么是静态常量(Const)以及什么是动态常量(Readonly). 静态常量(Const)是指编译器在编译时候会对常量进行解析,并 ...
-
我所理解的readonly和const
最近要给学校软件小组新成员讲几次课,所以把很多以前懒得学习的和模糊不清的知识点,重新学习了一下. MSDN是这样解释的: readonly 关键字与 const 关键字不同. const 字段只能在该 ...
-
readonly与const
readonly与const 在C#中,readonly 与 const 都是定义常量,但不同之处在于:readonly 是运行时常量,而 const 是编译时常量. ; public void Te ...
-
Readonly与const初识
对于readonly和const,很多人无法具体区分,不清楚它们的具体使用场合:现在我们分析它们之间的区别和使用场合. const是一个编译期常量:const只能用于修饰基元类型.枚举类型或者字符串类 ...
随机推荐
-
windows7系统配置maven环境
简介 maven的作用 1.通过在pom.xml配置的方式下载项目所需要的jar包 2.打jar包和打war包 1.环境配置 1.1 http://maven.apache.org/download ...
-
网页HTML1
表格表单 表格, <tabale> -------表格 <tr> --------------行 <td> -- ...
-
谈谈jconsole和jvisualvm
环境Eclipse-Mars ,JDK1.7 JConsole 一.首先需要配置参数 参数有两种配置连接方式:(原理我还不太懂) 1.在eclipse中添加 项目右键-->>Debug a ...
-
Oracle批量操作数据库
1:批量插入 <insert id="insertBatch" parameterType="Java.util.List" > insert in ...
-
docker安装优化
1.优化 #关闭防火墙 [root@docker03 ~]# systemctl stop firewalld.service [root@docker03 ~]# systemctl disable ...
-
Es6对象的扩展和Class类的基础知识笔记
/*---------------------对象的扩展---------------------*/ //属性简写 ,属性名为变量名, 属性值为变量的值 export default functio ...
-
linq 分组取各组最大值
static List<User> list1 = new List<User>() { new User(){id=1,name="张三"}, new U ...
-
libpcap 库使用(三)
1.为了使收到的报文尽快给我们的处理程序,需要设置成immediate模式: int pcap_set_immediate_mode(pcap_t *p, int immediate_mode);
-
python下安装lxml
首先在环境变量path中添加:C:\Python27\Scripts 然后打开cmd命令窗口,输入以下命令: easy_install virtualenv easy_install lxml 这样 ...
-
linux管道详解
原文链接:http://blog.csdn.net/qq_38646470/article/details/79564392 符号表示 | 和管道特别形象. 作用: 管道是Linux中很重要的 ...