const与readonly常量
const与readonly常量
const与readonly都是用来定义常量,但是它们有什么区别呢?
下面我们来简要的说明一下:
const修饰的常量是编译时常量,如:public const String PI=3.1415;什么是编译时常量,通俗来讲就是指你在声明时,必须要进行赋值(也就是初始化),如果不赋值,编译时会出现说“常量字段要求提供一个值”的异常。
readonly修饰的是运行时常量,可以在声明中赋值,也可以在构造函数中赋值(注意只能在这两个地方赋值)。
C#语言中有两种不同的常量类型,也就是静态常量和动态常量,静态常量是指编译器先对常量进行解析,并将常量的值替换成初始化的那个值(也就是指编译器会传播常量)。例如下面的代码:
class Program {
public static void Main(string[] args) {
Console.WriteLine("A is {0},B is {1} ", P.A,P. B);
Console.ReadKey();
}
}
class P {
public static const int A = B * 10;
public static const int B = 10;
}
控制台中输出的是A is 100,B is 10,也就是正是上面讲到的先对常量进行解析,然后替换初始化的值。
动态常量是指常量的值在运行的那一个刻才获得,程序在编译期间并未对常量进行解析,所以开始执行时都是默认值,如果是int类型的就是默认为0.如下面的代码:
class Program {
public static void Main(string[] args) {
Console.WriteLine("A is {0},B is {1} ", P.A,P. B);
Console.ReadKey();
}
}
class P {
public static readonly int A = B * 10;
public static readonly int B = 10;
}
控制台中输出的是A is 0,B is 10.
const与readonly有什么相同的作用呢?
那就是确保两者修饰的常量字段或者是常量局部变量,在后续的项目中不会由于编码操作失误而修改一些固定的值。当然如果是一些常常修改的值就不要用const或者是readonly来修饰了。
const与readonly常量的更多相关文章
- const,readonly 常量与只读
Const是常量 Const在编译时会被编译为静态成员,它确定于编译时期,属类型级,通过类型来访问. 现在通过以下几种情况来说明const常量: (1)初始化 public const string ...
- c# 编译期常量const和运行时常量readonly
注意:const编译期常量是编译的时候就确定的,可以查看IL代码,是写死的.如果另一个程序集引用后,该程序集没有进行编译,则值不会改变. 看效果: 项目中有2个程序集: 其中:常量在这个程序集中定义并 ...
- C#中的静态常量(const)和动态常量(static和readonly)用法和区别
C#中有两种常量类型,分别为readonly(运行时常量)与const(编译时常量),本文将就这两种类型的不同特性进行比较并说明各自的适用场景.工作原理 readonly为运行时常量,程序运行时进行赋 ...
- C#基础知识七之const和readonly关键字
前言 不知道大家对const和readonly关键字两者的区别了解多少,如果你也不是很清楚的话,那就一起来探讨吧!探讨之前我们先来了解静态常量和动态常量. 静态常量 所谓静态常量就是在编译期间会对变量 ...
- const 与 readonly知多少
原文地址: http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html 尽管你写了很多年的C#的代码,但是可能当别人问到你cons ...
- [c#基础]关于const和readonly常见的笔试题剖析
引言 有那么几天没更新博客了,发现到了不得不写的地步,总是有那么个声音在强迫自己,虽然工作很累,但是有些东西不写出来,不能原谅自己.今天为什么总结这两个关键字的区别,总觉得这两个关键字的用法用的太习惯 ...
- const 和 readonly
const 和 readonly 的异同 Const readonly 字面意 不变常量,不可修改 只读操作,不可写 初始化 必须在声明的同时赋值 可在声明和构造方法中进行赋值 所属关系 类.即sta ...
- C#夯实基础系列之const与readonly
一.const与readonly的争议 你一定写过const,也一定用过readonly,但说起两者的区别,并说出何时用const,何时用readonly,你是否能清晰有条理地说出个一二三 ...
- 读书笔记:const和readonly、static readonly 那些事
C#中表示不变的量(常量)的两种形式:const 和readonly const 是静态常量 readonly 是动态常量 严格的来讲:const 应该称为常量 而readonly 则应称为只读变量. ...
随机推荐
- HDU 1829 A Bug's Life (种类并查集)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1829 A Bug's Life Time Limit: 15000/5000 MS (Java/Oth ...
- C# 参数关键字params的作用
为了将方法声明为可以接受可变数量参数的方法,我们可以使用params关键字来声明数组,要求: (1)在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params ...
- javascript的执行机制—Event Loop
既然今天要谈的是javascript的事件循环机制,要理解事件循环,首先要知道事件循环是什么. 我们先从一个例子来看一下javascript的执行顺序. <script> setTimeo ...
- 实施erp的建议
纺织行业实施ERP建议 (一)企业各层面应提高对ERP的认识 ERP项目的实施范围横跨企业的每一个部门,在实施过程中需要调动各个部门的资源,这首先需要企业领导者高度重视,从实施的各个环节给予支持:其次 ...
- (Oracle)DBMS_SYSTEM工具-01[20180510]
分析描述: 使用DBMS_SYSTEM分析SQL语句执行,并且获取SQL会话中的绑定变量.等待事件.消耗资源和执行计划等等. 环境介绍: Oracle 11.2.0.4.0 L ...
- chrome浏览器页面获取绑定返回顶部动画事件插件
在chrome浏览器下页面加载: var top = $("body").scrollTop() ; console.log(top) ...
- Windows Oracle连接ORA-12541:TNS:无监听程序
上面两篇是安装和连接,这里写一下碰到的问题,安装后使用SQL Developer连接出现ORA-12541:TNS:无监听程序.网上搜了一下是安装的Oracle中自带的JDK是32位,而程序中使用的S ...
- 如何发布自己模块到NPM
创建项目 npm init name: (my-npm) version: (1.0.0) description: 0.0.1 entry point: (index.js) test comman ...
- tp3.2和Bootstrap模态框导入excel表格数据
导入按钮 <button class="btn btn-info" type="button" id="import" data-to ...
- 数据采集与分析的那些事——从数据埋点到AB测试
作者:网易有数郑栋. 一.为什么企业需要一套完善的用户行为埋点和分析平台 产品初创期间,需要分析天使用户的行为来改进产品,甚至从用户行为中得到新的思路或发现来调整产品方向:产品成长过程,通过对用户行为 ...