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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 墨蹄 中级黑马   /  2014-3-27 12:21  /  1392 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 墨蹄 于 2014-4-9 12:02 编辑

const 用来修饰常量,readonly 用来修饰一个变量,但是变量赋值后不能改变,问题:这样的话是不是说 赋值后的变量=const修饰的常量  ,有没有别的区别了

评分

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

查看全部评分

5 个回复

倒序浏览
有区别的,用const修饰的变量,变量值不能改变。不用const修饰的变量可以重新赋值。例如:int q=10; q=2;这样是可以的。
回复 使用道具 举报
czwanglei 发表于 2014-3-27 12:27
有区别的,用const修饰的变量,变量值不能改变。不用const修饰的变量可以重新赋值。例如:int q=10; q=2;这 ...

const修饰的变量和readonly修饰后的变量->这样这两种类型变量就都不能改变了 是不是这样的
回复 使用道具 举报
readonl修饰后赋值后的变量
回复 使用道具 举报
const用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。数据成员的声明式必须包含初始值,且初始值必须是一个常量表达式。因为它是在编译时就需要完全评估。
const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。
readonly在运行期间赋值,使我们得以在确保“只读访问”的前提下,把object的初始化动作推迟到运行期进行。
两者不同就是:const字段只能在该字段的声明中初始化。readonly字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly字段可能具有不同的值。

评分

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

查看全部评分

回复 使用道具 举报
const和static readonly的确很像:
通过类名而不是对象名进行访问,在程序中只读等等。在多数情况下可以混用。
二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。
而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。

        1.const、readonly和static readonly定义的常量,指定初始值后(包括在构造函数内指定的初始值) 将不可更改,可读不可写;
        2.const定义时必须指定初始值,而readonly定义时可以不进行初始化(MS建议在定义时初始值),同时也可以在构造函数内指定初始值,

          并以构造函数内指定的值为准;

        3.const和static readonly定义的常量是静态的,只能由类直接访问;而readonly定义的常量是非静态 的,只能由实例对象访问;  
        4.static readonly常量,如果在构造函数内指定初始值,则必须是静态无参构造函数;
        5.const是编译时常量,readonly是运行时常量;cosnt较高效,readonly较灵活。在应用上以static readonly代替const,以平衡const在灵活性上的不足,
           同时克服编译器优化cosnt性能,所带来的程序集引用不一致问题;  

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马