黑马程序员技术交流社区

标题: readonly和const [打印本页]

作者: 淡蓝色    时间: 2013-5-14 13:46
标题: readonly和const
请问谁能帮我详细解释一下,readonly和const的具体区别,或者说有什么异同
作者: 许大虾    时间: 2013-5-14 13:58
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的值是可以在运行的时候才确定值的~~
作者: 林东枫    时间: 2013-5-14 14:07
用const来修饰一个变量 ,那么这个变量的值 在整个程序中都不会发生变化的,必须在定义的时候把它初始化,以后都不能再给它赋值,我们称它为常量。 如: const int PI = 3.14; 只要计算圆的周长和面积,都可以用这个常量;

用readonly 修饰的,在后台代码中你随时都可把任何一个值付给它修饰的变量,但在前台,就没办法在它修饰的控件中输入任何文本

作者: 王明明1004    时间: 2013-5-14 22:08
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的值是可以在运行的时候才确定值的~~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2