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. Amazon前技术副总裁解剖完美技术面试

    Amazon前技术副总裁解剖完美技术面试 投递人 itwriter 发布于 2014-03-03 14:30 评论(0) 有1729人阅读  原文链接  [收藏]  « » 英文原文:The Anat ...

  2. C++反汇编与逆向分析技术揭秘

    C++反汇编-继承和多重继承   学无止尽,积土成山,积水成渊-<C++反汇编与逆向分析技术揭秘> 读书笔记 一.单类继承 在父类中声明为私有的成员,子类对象无法直接访问,但是在子类对象的 ...

  3. poj2187(未完、有错)

    凸包求直径(socalled..) 采用Graham+Rotating_Calipers,Graham复杂度nlogn,RC算法复杂度n,所以时间复杂度不会很高. 学习RC算法,可到http://cg ...

  4. WCF从零学习之设计和实现服务协定2

    WCF从零学习之设计和实现服务协定(二)   在创建服务协定之前,有很多WCF术语,比如: 消息.服务.终结点 创建协定 类或接口都可以定义服务协定,建议使用接口,因为接口可以直接对服务协定建模 服务 ...

  5. PHP的curl实现get,post 和 cookie(几个实例)

    类似于dreamhost这类主机服务商,是显示fopen的使用 的.使用php的curl可以实现支持FTP.FTPS.HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE ...

  6. mongodb学习(翻译1)

    学习mongodb,试着翻译写,英语能力有限,希望大家指正,不顺畅地方大家担待,会后续翻译后面内容: 开始认识C#驱动(官方) 简介 本介绍提供了足够的信息,让你开始使用C#的驱动程序.起步之后,你可 ...

  7. URLDecoder: Incomplete trailing escape (%) pattern

    在使用URLDecoder对字符串进行解码的时候 报以下异常信息: Exception in thread "main" java.lang.IllegalArgumentExce ...

  8. asp.net mvc4设置area里面使用相同的 Controller 名称并设置area里的页面为起始页

    asp.net mvc4设置area里面使用相同的 Controller 名称并设置area里的页面为起始页 1.使用重名controller 在asp.net mvc2以后的版本里面,有了area( ...

  9. 测试HashTable、Collections.synchronizedMap和ConcurrentHashMap的性能

        对于map的并发操作有HashTable.Collections.synchronizedMap和ConcurrentHashMap三种,到底性能如何呢? 测试代码: package com. ...

  10. join多表连接和group by分组

    join多表连接和group by分组 上一篇里面我们实现了单表查询和top N查询,这一篇我们来讲述如何实现多表连接和group by分组. 一.多表连接 多表连接的时间是数据库一个非常耗时的操作, ...