readonly与const的区别:
1.初始化:const  字段只能在该字段的声明中初始化。 readonly  字段可以在声明或构造函数中初始化。
2.值: const 字段是编译时常量(const本身是static,不能与static一起使用),readonly 字段可用于编译时常量,也可用于运行时常量。const修饰的字段其值不能被改变,只有一个值;readonly 字段的值(包括运行时常量的值和编译时常量的值)可以在所使用的构造函数中被改变,即readonly 字段可能具有不同的值。
class Class1    //实例成员应用readonly
{      
    //readonly在声明时初始化
    public readonly double x = 58.5;//此时x与y没区别
    public const double y = 58.5;
 
    public readonly double a = int.Parse("58.5");
    //public const double b = int.Parse("58.5");//报错:b的表达式必须是常量
 
    public readonly int c = (int)new Random().Next(10,20);
    //public const int d = (int)new Random().Next(10, 20);//报错:d的表达式必须是常量
 
    //readonly在构造器中初始化
    public Class1()
    {
        x = 12;
        //y = 12;//报错:赋值号左边必须是变量、属性或索引器,也就是说const值不能再次赋值
        c = (int)new Random().Next(10, 20);
    }
}
class Class2   //静态字段使用readonly
{
    //readonly修饰静态字段时可以在声明时初始化
    public static readonly double x = 58.5;//此时x与y没区别
    public const double y = 58.5;
 
    public static readonly double a = int.Parse("58.5");
    //public const double b = int.Parse("58.5");//报错:b的表达式必须是常量
 
    public static readonly int c = (int)new Random().Next(10,20);
    //public const int d = (int)new Random().Next(10, 20);//报错:d的表达式必须是常量
 
    //readonly修饰静态字段时也可以在静态构造器中初始化
    static Class2()
    {
        x = 12;//readonly的编译时常数值可以在静态构造器中再次被改变
        //y = 12;//报错
        c = (int)new Random().Next(10, 20);//readonly的运行时常数值可以在静态构造器中再次被改变
    }
}

c#:readonly与const的区别的更多相关文章

  1. readonly和const的区别

    readonly与const的区别1.const常量在声明的同时必须赋值,readonly在声明时可以不赋值2.readonly只能在声明时或在构造方法中赋值(readonly的成员变量可以根据调用不 ...

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

    什么是静态常量(Const)和动态常量(Readonly)   先解释下什么是静态常量(Const)以及什么是动态常量(Readonly). 静态常量(Const)是指编译器在编译时候会对常量进行解析 ...

  3. C# readonly和const的区别

    什么是静态常量(Const)和动态常量(Readonly) 先解释下什么是静态常量(Const)以及什么是动态常量(Readonly). 静态常量(Const)是指编译器在编译时候会对常量进行解析,并 ...

  4. readonly与const的区别

    readonly 关键字与 const 关键字不同.const 字段只能在该字段的声明中初始化.readonly字段可以在声明或构造函数中初始化.因此,根据所使用的构造函数,readonly字段可能具 ...

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

    总结const. readonly. static三者区别: (有人问我,看似简单,我也没能立刻回答出来,总结一下,分享一下.) const:静态常量,也称编译时常量(compile-time con ...

  6. 编写高质量代码改善C#程序的157个建议——建议6: 区别readonly和const的使用方法

    建议6: 区别readonly和const的使用方法 很多初学者分不清readonly和const的使用场合.在我看来,要使用const的理由只有一个,那就是效率.但是,在大部分应用情况下, “效率” ...

  7. 我所理解的readonly和const

    最近要给学校软件小组新成员讲几次课,所以把很多以前懒得学习的和模糊不清的知识点,重新学习了一下. MSDN是这样解释的: readonly 关键字与 const 关键字不同. const 字段只能在该 ...

  8. readonly与const

    readonly与const 在C#中,readonly 与 const 都是定义常量,但不同之处在于:readonly 是运行时常量,而 const 是编译时常量. ; public void Te ...

  9. Readonly与const初识

    对于readonly和const,很多人无法具体区分,不清楚它们的具体使用场合:现在我们分析它们之间的区别和使用场合. const是一个编译期常量:const只能用于修饰基元类型.枚举类型或者字符串类 ...

随机推荐

  1. Asp.Net异步编程

    Asp.Net异步编程-使用了异步,性能就提升了吗? Asp.Net异步编程 写在前面的话,很久没有写Blog了,不对,其实一致就没有怎么写过.今天有空,我也来写一篇Blog 随着.Net4.5的推出 ...

  2. python包

    有个伟人说过: python的学习很大一部分取决与你对第三方包的熟悉和掌握程度! virtualenv virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够: ...

  3. UVA 408 (13.07.28)

     Uniform Generator  Computer simulations often require random numbers. One way to generatepseudo-ran ...

  4. [转]解决MySQL出现大量unauthenticated user的问题

    最近发现两台MySQL server在中午的时候忽然(很突然的那种)发飙,不断的挂掉.重启mysql也尽是失败,看mysql的errorlog,只能看到类似如下的信息: Forcing close o ...

  5. 字符串比较strcmp

    问题: 原型:extern int strcmp(const char *s1,const char * s2); 所在头文件:string.h 功能:比较字符串s1和s2. 一般形式:strcmp( ...

  6. C#对html的操作

    1,获取相对路径的html然后保存到本地路径 /// <summary> /// Html方法 /// </summary> /// <returns></r ...

  7. AOP的成员介绍

    AOP(Aspect Oriented Programming)面向切面编程,AOP的作用不过多介绍,本文是主要是介绍AOP的成员,是我在复习的时候记录的一些笔记,方便以后查阅方便一些. JointP ...

  8. HTTP状态码的意义

    100系列码 从100到199范围的HTTP状态码是信息报告码.基于各种原因考虑,大多数情况下我们是 很少看见这些代码的.首先,如果一个浏览器尝试访问一个网站,而网站返回这些代码时,它们往往都不会显示 ...

  9. 删除重复&海量数据

    08. 删除重复&海量数据   重复数据,通常有两种:一是完全重复的记录,也就是所有字段的值都一样:二是部分字段值重复的记录. 一. 删除完全重复的记录完全重复的数据,通常是由于没有设置主键/ ...

  10. [转载]linux下编译php中configure参数具体含义

    编译N次了   原来这么回事 原文地址:linux下编译php中configure参数具体含义作者:捷心特 php编译参数的含义 ./configure –prefix=/usr/local/php ...