const常量和readyonly常量区别

1、const常量为静态常量;readyonly常量为动态常量;
2、const常量在编译时值被确定,在运行时值为编译时值;readyonly常量,在编译时为类型的默认值(非指定的默认值),在运行时值被确定;
3、const常量无内存消耗;readyonly存常量有内存消耗;
4、const常量为引用类型,值为string.Empty或null;readyonly为值类型,可以为任何值;

如:
 const int A=1;
 readyonly int B=1;
 -------------------
 编译时:A=1;B=0;
 运行时:A=1;B=1;
 A=1;
 B=1;
 -------------------
 const int A=B+1;
 readyonly int B=1;
 -------------------
 编译时:B=0;A=0+1=1;
 运行时:A=1;B=1;
 A=1;
 B=1;
 -------------------
 const int A=B+1;
 const int B=1;
 -------------------
 编译时:B=1;A=1+1=2;
 运行时:A=2;B=1;
 A=2;
 B=1;
 -------------------
时间: 2024-10-09 12:35:37

const常量和readyonly常量区别的相关文章

深入分析php中const和define定义常量的区别

const和define在php中都是定义常量了,但是它们的具体区别是什么?其实非常的简单const用于类成员变量定义,一旦定义且不能改变其值.define定义全局常量,在任何地方都可以访问 页define不能在类中定义而const可以了,下面整理了一篇文章. 大家都知道define是定义常量的,如果在类中定义常量呢?当然不能用define,而用const,如下例: <?php define('PHP', 'I love PHP'); // 在类外面通常这样定义常量 if (defined('P

const常量与宏定义区别

(1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开. const常量有具体的类型,在编译阶段会执行类型检查. (3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存. const常量会在内存中分配(可以是堆中也可以是栈中). (4)const  可以节省空间,避免不必要的内存分配. 例如: #define PI 3.14159 //

常量指针、指针常量、指向常量的指针常量 的区别(转帖)

转自:常量指针与指针常量的区别(转帖)  建议直接访问原网址,查看下面的评论 三个名词虽然非常绕嘴,不过说的非常准确.用中国话的语义分析就可以很方便地把三个概念区分开. 一) 常量指针. 常量是形容词,指针是名词,以指针为中心的一个偏正结构短语.这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量). 指针指向的对象是常量,那么这个对象不能被更改. 在C/C++中,常量指针是这样声明的: const int *p; int const *p; 常量指针的使用要注意,指

java中字符串常量,堆栈的区别和字符串函数intern()

转自:http://txy821.iteye.com/blog/760957 java.lang.String的intern()方法 "abc".intern()方法的返回值还是字符串"abc",表面上看起来好像这个方法没什么用处.但实际上,它做了个小动作: 检查字符串池里是否存在"abc"这么一个字符串,如果存在,就返回池里的字符串:如果不存在,该方法会把"abc"添加到字符串池中,然后再返回它的引用. 我们做个测试: Ja

字符串常量与字符串数组区别

在论坛上看到过有人说字符串常量存储在只读区域,不能写只能读: 而字符数组是栈上,可读可写. #include<stdio.h> #include<stdarg.h> int main(){ /*字符数组存储于动态内存中,可以进行赋值操作*/ char message[]={'h','e','l','l','\0'}; message[2]='a'; printf("%s\n",message); /*指向字符数组的指针也可以对内存进行操作*/ char *p=m

const和宏定义的区别!!!

宏的命名规范:一般以项目前缀开头,key结尾. #开头表编译. 宏的用法:1.定义常用字符串. 2.定义一段代码. const与宏的区别:1.编译时刻:宏-预编译    const-command+b(编译阶段)编译. 2.宏不会检查代码错误,只是替换,但是const会编译报错. 3.宏的好处:定义代码或字符串.方法.参数 const不能.  坏处:使用大量宏,容易造成编译时间久,每次都需要重新替换. const作用:限制类型 1.const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p)

探讨:编译时常量和运行时常量

编译时常量和运行时常量 C#有2种不同的常量定义方式:编译时常量(compile-time)和运行时常量(runtime).他们的行为方式有很大的不同,如果选用了错误的一个,那么将让程序的性能和正确性产生商榷.当然,一个系统最好没有任何问题,但是如果一定会存在一个问题,那么一个稍慢的但强壮的系统比一个速度更快的但很脆弱的系统要好.基于以上理由,在二者选其一的时候,你最好选择运行时常量. 运行时常量以 readonly 关键字定义,编译时是常量以 const 关键字定义: public const

const和define的使用区别

在PHP中(PHP 4及以后),我们可以使用函数define()来定义常量,例如: <?php define('PI',3.14159);  //定义一个名为PI的常量 echo PI;    //输出:3.14159 ?> 不过,在PHP 5.3.0之后,除了使用函数define()之外,我们还可以使用PHP关键字const来定义常量,例如: <?php //以下代码需在PHP 5.3.0及之后的版本中运行 const PI =3.14159;//使用const关键字定义一个名为PI的

12)PHP,常量和魔术常量

义:用于存储一个不会变化也不希望变化的数据的标示符. 常量命名规则,同变量,但习惯说,常常将常量的名称使用"全大写"形式. 定义形式 使用define()函数定义 使用形式:define("常量名", 常量值): 推荐常用名使用全大写形 使用const语法定义 使用形式: const  常量名 = 常量值: 但const语法只能在"最顶层"的代码域中使用(不能在大括号中) 也即,const语法不能在函数中或条件语句中或其他表示一个"范围