设为首页 加入收藏

TOP

C#基本知识点-Readonly和Const的区别(二)
2015-03-04 22:51:15 来源: 作者: 【 】 浏览:107
Tags:基本 知识点 -Readonly Const 区别
t student)


{


this.Student = student;


}


}


School实例的Student是一个引用类型的变量,赋值后,变量不能再指向其他任何的Student实例,所以,下面的代码将不会编译通过:


School school = new School(new Student(10));


school.Student = new Student(20);//错误信息:无法对只读的字段赋值(构造函数或变量初始化器中除外)


引用本身不可以改变,但是引用说指向的实例的值是可以改变的。所以下面的代码是可以编译通过的:


School school = new School(new Student(10));


school.Student.Age = 20;


在构造方法中,我们可以多次对Readonly修饰的常量赋值。举个例子说明一下:


public class Student


{


public readonly int Age = 20;//注意:初始化器实际上是构造方法的一部分,它其实是一个语法糖


public Student(int age)


{


this.Age = age;


this.Age = 25;


this.Age = 30;


}


}


总结


Const和Readonly的最大区别(除语法外)


Const的变量是嵌入在IL代码中,编译时就加载好,不依赖外部dll(这也是为什么不能在构造方法中赋值)。Const在程序集更新时容易产生版本不一致的情况。


Readonly的变量是在运行时加载,需请求加载dll,每次都获取最新的值。Readonly赋值引用类型以后,引用本身不可以改变,但是引用所指向的实例的值是可以改变的。在构造方法中,我们可以多次对Readonly赋值。


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C#可空类型 下一篇【OpenCV】使用floodfill()实现Ph..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: