黑马程序员技术交流社区

标题: const 和 static readonly 的区别又是什么?新人求解答。谢谢!~ [打印本页]

作者: 卖火柴    时间: 2013-12-20 13:06
标题: const 和 static readonly 的区别又是什么?新人求解答。谢谢!~
const 和 static readonly 的区别又是什么?新人求解答。谢谢!~
作者: 土豆泥    时间: 2013-12-20 14:01
在多数情况下可以混用。二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。
作者: 诱惑灵魂    时间: 2013-12-20 20:00
const 常量  在程序中这个值是不变化的
static 静态变量 作用是始终保持其存在,再下次调用时保持上一次的结果。

readonly 是只读,不可修改的变量
作者: 红鹰(Jake)    时间: 2013-12-20 20:32
我还是第一次看见,很好,查了一下:
可以参考一下http://blog.sina.com.cn/s/blog_7d599c7201010bag.html
作者: 邢换换    时间: 2013-12-21 10:25
const: 用const修饰符声明的成员叫常量,是在编译期初始化并嵌入到客户端程序 static readonly: 用static readonly修饰符声明的成员依然是变量,只不过具有和常量类似的使用方法:通过类进行访问、初始化后不可以修改。但与常量不同的是这种变量是在运行期初始化 。
作者: 梦想是否存在    时间: 2013-12-21 16:15
虽然两者都是通过类名访问的,不过他两的值在时间先后上有所区别。
const的值编译时确定, static readonly的值运算时确定。
作者: 师弟    时间: 2013-12-22 00:02
static修饰的是属于类的,所有类公用一个。
const修饰常量,定义时就必须赋值,出现这个常量就是定义是的那个值,在编译时就可确定了。
readonly 修饰是表示只能读不能改,可在定义时和构造方法中,这是和const.不一样的地方
作者: 【⑨】№①妮    时间: 2013-12-22 10:38
const和static readonly的确很像,都在程序中只读,都是一旦初始化则都不再可以改写都是属于语言的静态等等。并且在多数情况下可以混用。 区别 const 1.     在编译期间解析的常量 2.     必须在声明就初始化 3.     既可用来修饰类中的成员,也可修饰函数体内的局部变量。 static readonly 1.     在运行期间解析的常量, 2.     既可以在声明时初始化也可以在构造器中初始化。 3.     只可以用于修饰类中的成员
作者: qly2046    时间: 2013-12-23 21:50
我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等。

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

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


作者: SunshineGirl    时间: 2013-12-25 13:51
当别人给你回答问题了,那要及时设置成“提问结束”,这样版主才会相应的给你加分的。
作者: V_John    时间: 2013-12-29 11:37
如果问题得到解决,请修改为已解决
作者: 涵风    时间: 2014-1-4 22:00
const 常量  在程序中这个值是不变化的
static 静态变量 作用是始终保持其存在,再下次调用时保持上一次的结果。

readonly 是只读,不可修改的变量
作者: .NET初学者    时间: 2014-1-5 09:56
1、const表示的是常量,在声明时必须赋值。而readonly可以在声明时赋值也可以在运行时赋值。
2、对于readonly修饰的字段成员可以在两种情况下对其进行初始化:声明时初始化,在构造函数中初始化。
3、如果readonly修饰的字段成员是静态的,那么该成员必须在静态构造函数中初始化。
4、readonly修饰的字段与常量虽然很类似,但还有着其他的不同:首先常量的行为总是静态的,而readonly字段既可以是静态的也可以是实例的,而且readonly字段在栈中分配内存,而常量则没有存储的位置。




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