readonly和const的区别

readonly与const的区别
1、const常量在声明的同时必须赋值,readonly在声明时可以不赋值
2、readonly只能在声明时或在构造方法中赋值(readonly的成员变量可以根据调用不同的构造方法赋不同的值)
3、const前面不能添加static(因为Const本来就是一个静态常量),readonly前面可以添加static
4、const在编译的时候赋值,readonly在运行的时候赋值
5、const能在方法内声明,readonly不能在方法内声明

class ReadOnlyAndConst
    {
        public const string name="张三";//const常量是本来就是静态常量,所以前面不能加static
        public static readonly int age;

public ReadOnlyAndConst(int age)
        {
            //this.age = age;
        }

public void Method()
        {
            //this.age = 23; //出错readonly的字段只能在声明时或在构造方法中赋值

const int num1 = 10;//const可以在方法内部声明
            //readonly int num2 = 10;//出错,readonly不能在方法内部声明
        }
    }

readonly和const的区别

时间: 2024-10-05 20:09:30

readonly和const的区别的相关文章

C#基本知识点-Readonly和Const的区别

目录 什么是静态常量(Const)和动态常量(Readonly) 静态常量(Const)和动态常量(Readonly)之间的区别 动态常量(Readonly)被赋值后不可以改变 总结 什么是静态常量(Const)和动态常量(Readonly) 先解释下什么是静态常量(Const)以及什么是动态常量(Readonly). 静态常量(Const)是指编译器在编译时候会对常量进行解析,并将常量的值替换成初始化的那个值. 动态常量(Readonly)的值则是在运行的那一刻才获得的,编译器编译期间将其标示

C# readonly和const的区别

什么是静态常量(Const)和动态常量(Readonly) 先解释下什么是静态常量(Const)以及什么是动态常量(Readonly). 静态常量(Const)是指编译器在编译时候会对常量进行解析,并将常量的值替换成初始化的那个值. 动态常量(Readonly)的值则是在运行的那一刻才获得的,编译器编译期间将其标示为只读常量,而不用常量的值代替,这样动态常量不必在声明的时候就初始化,而可以延迟到构造函数中初始化. 静态常量(Const)和动态常量(Readonly)之间的区别 静态常量(Comp

C#中readonly与const的区别

readonly 关键字与 const 关键字不同.const 字段只能在该字段的声明中初始化.readonly字段可以在声明或构造函数中初始化.因此,根据所使用的构造函数,readonly字段可能具有不同的值.另外,const字段是编译时常量,而readonly字段可用于运行时常量**. const 关键字用于修改字段或局部变量的声明.它指定或字段或居部变量的值是常数,不能被修改.const 存处在Assembly(程序集)中Enum本质上是const,所以它也存在我刚才说的断层的问题

转载:readonly和const比较

原文地址:http://www.cnblogs.com/panjun-Donet/archive/2008/03/28/1127680.html 前天犯了个低级错误,是关于readonly的,总结了一下:    C#的readonly关键字只能在字段上面使用public readonly TcpClient client;不能在类,方法,属性上面使用readonly!!顺便看了一下readonly和const的区别: readonly和const都是用来标识常量的. const可用于修饰clas

C# 总结const、 readonly、 static三者区别:

总结const. readonly. static三者区别: (有人问我,看似简单,我也没能立刻回答出来,总结一下,分享一下.) const:静态常量,也称编译时常量(compile-time constants),属于类型级,通过类名直接访问,被所有对象共享! a.叫编译时常量的原因是它编译时会将其替换为所对应的值: b.静态常量在速度上会稍稍快一些,但是灵活性却比动态常量差一些: c.静态常量,隐式是静态的,即被static隐式修饰过,不能再用static重复修饰, d.在声明时初始化: e

[C#]readonly vs const

C#中的readonly和const两个关键字都可以用来定义系统变量,那两者之间有什么区别呢? 1. const变量赋值后,就不可以对其进行修改.且在定义时就需要给它赋值,使用const修饰的变量是static的.可以使用YourClass.ConstantName的方式进行访问: 2. readonly变量可以在定义时赋值,也可以在构造方法中赋值或者修改定义时赋给的初始值: 另外还有一个细微的差别.看下面的场景,我在AssemblyA中定义了一个类如下: public class Readon

我所理解的readonly和const

最近要给学校软件小组新成员讲几次课,所以把很多以前懒得学习的和模糊不清的知识点,重新学习了一下. MSDN是这样解释的: readonly 关键字与 const 关键字不同. const 字段只能在该字段的声明中初始化. readonly 字段可以在声明或构造函数中初始化. 因此,根据所使用的构造函数,readonly 字段可能具有不同的值. 另外,const 字段为编译时常数,而 readonly 字段可用于运行时常数. 什么是编译时常数,什么是运行时常数呢.我想做下面的实验,关于readon

readonly 与 const

readonly MSDN定义:readonly 关键字是可以在字段上使用的修饰符.当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中. readonly修饰的字段只能在两个地方对其赋值,第一个是初始化字段的时候,第二个是构造函数中. 1 class Age 2 { 3 //第一个可赋值的地方 4 //private readonly int _year = 20; 5 readonly int _year; 6 7 Age(i

Break 、Continue 和ReadOnly、Const和Ref和Out params

Break和Continue区别 之前对于Break和Continue:ReadOnly和Const:ref和out,params之类的基础东东学习过,但是一直没有仔细去研究到底是怎么一回事儿,最近在开发中用到了,仔细来做个总结: 1.Break和Continue //break是跳出整个循环体,不再执行本循环,continue是结束单次循环,继续下一次循环. //更多问题 联系QQ 931697811(夜雨梧桐) 1 #region Break测试 2 3 Console.WriteLine(