黑马程序员技术交流社区

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

作者: 崔增阳    时间: 2014-4-14 10:39
标题: const 和 static readonly 区别
const 和 static readonly 有什么区别?
作者: 许庭洲    时间: 2014-4-14 10:46
1. const关键字用于修改字段或局部变量的声明。它制定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数;
2. const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估;
3. const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖;
4. readonly在运行期间评估赋值,使我们得以确保"只读访问"的前提下,把object的初始化动作推迟到运行期间;
5. const字段只能在该字段的声明中初始化;
6. readonly字段可以在声明或构造函数中初始化;
7. 因此,根据所使用的构造函数,readonly字段可能具有不同的值。另外,const字段是编译时常数,而readonly字段可用于运行时常数。
作者: 黒■色    时间: 2014-4-14 10:48
const为编译时常量,程序编译时将对常量值进行解析,并将所有常量引用替换为相应值
static readonly为运行时常量,程序运行时进行赋值,赋值完成后便无法更改,因此也有人称其为只读变量
const修饰的常量在声明的时候必须初始化;static readonly修饰的常量则可以延迟到构造函数初始化
const常量既可以声明在类中也可以在函数体内,但是static readonly常量只能声明在类中

作者: gyt_xtt    时间: 2014-4-14 11:10
const 常量,是隐式静态的,赋初始值后从未变过,定义常量时必须为常量指定初始值
readonly 只读字段,和常量相似,不能在赋初始值后改变。然而和常量不同的是,赋给只读字段的值可以在运行时决定,因此在构造函数作用域中进行赋值是合法的。
static readonly 静态只读字段,和常量不同,只读字段不是隐式静态的,所以从类的级别公开字段,就必须显示使用static关键字。




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