c#中const与readonly区别

原文:c#中const与readonly区别

const 的概念就是一个包含不能修改的值的变量。
常数表达式是在编译时可被完全计算的表达式。因此不能从一个变量中提取的值来初始化常量。
如果 const int a = b+1;b是一个变量,显然不能再编译时就计算出结果,所以常量是不可以用变量来初始化的。

readonly 允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值。
因为 readonly 是在计算时执行的,当然它可以用某些变量初始化。
readonly 是实例成员,所以不同的实例可以有不同的常量值,这使readonly更灵活。

readonly 关键字与 const 关键字不同。

1. const 字段只能在该字段的声明中初始化。
readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。
2. const 字段是编译时常数,而 readonly 字段可用于运行时常数。
3. const 默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。
4.const 对于引用类型的常数,可能的值只能是 string 和 null。
readonly可以是任何类型

总结
const只能在初期就使用常量初始化好。对于每一次编译后的结果,const的值是固定的,而readonly的值是可以在运行的时候才确定值的~~

时间: 2024-09-27 02:59:37

c#中const与readonly区别的相关文章

浅谈c#中const与readonly区别

  C#引入了readonly修饰符来表示只读域,const来表示不变常量.顾名思义对只读域不能进行写操作,不变常量不能被修改,这两者到底有什么区别呢? const 的概念就是一个包含不能修改的值的变量. 常数表达式是在编译时可被完全计算的表达式.因此不能从一个变量中提取的值来初始化常量. 如果 const int a = b+1;b是一个变量,显然不能再编译时就计算出结果,所以常量是不可以用变量来初始化的. readonly 允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值.

link中const和readonly对于变量的影响有什么不同?

问题描述 link中const和readonly对于变量的影响有什么不同? link中const和readonly对于变量的影响有什么不同? 解决方案 const是编译器硬编码进去的,没有符号. readonly则是保留符号的,可以通过反射查询. const因为是硬编码的,所以一旦程序修改了,那么和直接的程序二进制就不兼容了.最好不要用const 解决方案二: 在多个类实例时有差别的: const 在所有的实例中值都相等: readonly 可以在类的构造函数中初始化,不同实例之间取值可以不等.

C#中const 和 readonly 修饰符的用法详解_C#教程

1. 只有C#内置类型(int,double,long等)可以声明为const;结果.类和数组不能声明为const. 2. readonly 是在字段上使用的修饰符,直接以类名.字段访问. 3. const 必须在申明中初始化.之后不能再修改. 4. readonly可以在申明中初始化,也可以在构造函数中初始化,其它情况不能修改. namespace const_and_readonly { class Program { static void Main(string[] args) { Co

C#中 const 和 readonly 的区别

ado|区别 const 和 readonly 的区别,总是不太清楚,于是查了查资料.   const 的概念就是一个包含不能修改的值的变量.常数表达式是在编译时可被完全计算的表达式.因此不能从一个变量中提取的值来初始化常量.如果 const int a = b+1;b是一个变量,显然不能再编译时就计算出结果,所以常量是不可以用变量来初始化的.   readonly 允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值.因为 readonly 是在计算时执行的,当然它可以用某些变量初

【js】js中const,var,let区别

在node.js使用例子中,第一次看到const的声明,查询了一下,可以看得出来: http://www.cnblogs.com/ksl666/p/5944718.html 参考   主要内容是:js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化.类似于java中的常量 1 const b = 2;//正确 2 // const b;//错误,必须初始化 3 console.log('函数外const定义b:' + b);//有输出

C# const 和 readonly 用法及区别

readonly 允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值. 因为 readonly 是在计算时执行的,当然它可以用某些变量初始化. readonly 是实例成员,所以不同的实例可以有不同的常量值,这使readonly更灵活. readonly 关键字与 const 关键字不同. 1. const 字段只能在该字段的声明中初始化.    readonly 字段可以在声明或构造函数中初始化.因此,根据所使用的构造函数,readonly 字段可能具有不同的值. 2. cons

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

大家都知道define是定义常量的,如果在类中定义常量呢?当然不能用define,而用const,如下例:  代码如下 复制代码 <?php define('PHP', 'I love PHP'); // 在类外面通常这样定义常量 if (defined('PHP')) {     echo 'PHP is defined!'; }   class MyClass {     // 常量的值将始终保持不变.在定义和使用常量的时候不需要使用$符号     const CONSTANT = 'con

[c#基础]关于const和readonly常见的笔试题剖析

引言 有那么几天没更新博客了,发现到了不得不写的地步,总是有那么个声音在强迫自己,虽然工作很累,但是有些东西不写出来,不能原谅自己.今天为什么总结这两个关键字的区别,总觉得这两个关键字的用法用的太习惯了,没想过为什么这么用,就好比为什么一直用右手拿筷子,这么习惯.为什么我要用右手拿筷子,为什么不用左手呢?突然你就这么干了,发现你和周边很不协调,而且还夹不了菜.const和readonly也一样,习惯了,一直这样用,也就没追究过.突然被那么一问,还真说不出来个一二,今天就细细的研究下,到底这东东是

C# .NET Quiz: const vs. readonly

ado 关于C#中的const和readonly想必使用C# .NET开发的朋友都很了解吧?总结一下const和readonly也就这么几条吧: const和readonly的值一旦初始化则都不再可以改写: const只能在声明时初始化:readonly既可以在声明时初始化也可以在构造器中初始化: const隐含static,不可以再写static const:readonly则不默认static,如需要可以写static readonly: const是编译期静态解析的常量(因此其表达式必须在