A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

const 和 static readonly 的区别又是什么?新人求解答。谢谢!~

12 个回复

倒序浏览
在多数情况下可以混用。二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
const 常量  在程序中这个值是不变化的
static 静态变量 作用是始终保持其存在,再下次调用时保持上一次的结果。

readonly 是只读,不可修改的变量

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
我还是第一次看见,很好,查了一下:
可以参考一下http://blog.sina.com.cn/s/blog_7d599c7201010bag.html
回复 使用道具 举报
const: 用const修饰符声明的成员叫常量,是在编译期初始化并嵌入到客户端程序 static readonly: 用static readonly修饰符声明的成员依然是变量,只不过具有和常量类似的使用方法:通过类进行访问、初始化后不可以修改。但与常量不同的是这种变量是在运行期初始化 。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
梦想是否存在 来自手机 中级黑马 2013-12-21 16:15:02
地板
虽然两者都是通过类名访问的,不过他两的值在时间先后上有所区别。
const的值编译时确定, static readonly的值运算时确定。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
师弟 中级黑马 2013-12-22 00:02:43
7#
static修饰的是属于类的,所有类公用一个。
const修饰常量,定义时就必须赋值,出现这个常量就是定义是的那个值,在编译时就可确定了。
readonly 修饰是表示只能读不能改,可在定义时和构造方法中,这是和const.不一样的地方

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
const和static readonly的确很像,都在程序中只读,都是一旦初始化则都不再可以改写都是属于语言的静态等等。并且在多数情况下可以混用。 区别 const 1.     在编译期间解析的常量 2.     必须在声明就初始化 3.     既可用来修饰类中的成员,也可修饰函数体内的局部变量。 static readonly 1.     在运行期间解析的常量, 2.     既可以在声明时初始化也可以在构造器中初始化。 3.     只可以用于修饰类中的成员

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报 1 0
qly2046 中级黑马 2013-12-23 21:50:45
9#
我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等。

在多数情况下可以混用。
二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而

static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
当别人给你回答问题了,那要及时设置成“提问结束”,这样版主才会相应的给你加分的。
回复 使用道具 举报
V_John 中级黑马 2013-12-29 11:37:17
11#
如果问题得到解决,请修改为已解决
回复 使用道具 举报
const 常量  在程序中这个值是不变化的
static 静态变量 作用是始终保持其存在,再下次调用时保持上一次的结果。

readonly 是只读,不可修改的变量
回复 使用道具 举报
1、const表示的是常量,在声明时必须赋值。而readonly可以在声明时赋值也可以在运行时赋值。
2、对于readonly修饰的字段成员可以在两种情况下对其进行初始化:声明时初始化,在构造函数中初始化。
3、如果readonly修饰的字段成员是静态的,那么该成员必须在静态构造函数中初始化。
4、readonly修饰的字段与常量虽然很类似,但还有着其他的不同:首先常量的行为总是静态的,而readonly字段既可以是静态的也可以是实例的,而且readonly字段在栈中分配内存,而常量则没有存储的位置。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马