zoukankan      html  css  js  c++  java
  • C#中Const和Readonly的区别

    const 的概念就是一个包含不能修改的值的变量。
    常数表达式是在编译时可被完全计算的表达式。因此不能从一个变量中提取的值来初始化常量。
    如果 const int a = b+1;b是一个变量,显然不能再编译时就计算出结果,所以常量是不可以用变量来初始化的。

    readonly 允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值。
    因为 readonly 是在计算时执行的,当然它可以用某些变量初始化。
    readonly 是实例成员,所以不同的实例可以有不同的常量值,这使readonly更灵活。

    readonly 关键字与 const 关键字不同。

    1. const 字段只能在该字段的声明中初始化。
    readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。
    2. const 字段是编译时常数,而 readonly 字段可用于运行时常数。
    3. const 默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。
    4.const 对于引用类型的常数,可能的值只能是 string 和 null。
    readonly可以是任何类型

    总结
    const只能在初期就使用常量初始化好。对于每一次编译后的结果,const的值是固定的,而readonly的值是可以在运行的时候才确定值的~~






    const是一个c语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。另外const在其他编程语言中也有出现,如c++、php5、c#.net、hc08 c
    const 一般修饰 的变量为只读变量
    const定义应该为在定义的时候初始化 以后不能改变他的值
    例:

    复制代码代码如下:
    const int a=1;//只能在定义的时候初始化;
    a=2;//出现错误 因为a为只读变量
    const 修饰一些指针时候的用法
    int a;
    const int *p=&a;// *p是不允许改变的 但是p是允许改变的
    int * const p1 //定义了一个只读的变量p1 ;p1不可以改变 *p1是可以改变的

    常数声明可以声明多个常数,例如:

    复制代码代码如下:
    public const double x = 1.0, y = 2.0, z = 3.0;

    不允许在常数声明中使用 static 修饰符。
    常数可以参与常数表达式,如下所示:
    复制代码代码如下:
    public const int c1 = 5;
    public const int c2 = c1 + 100;

    注意:

    readonly 关键字与 const 关键字不同。const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而 readonly 字段可用于运行时常数,如下面的代码行所示:

    复制代码代码如下:
    public static readonly uint l1 = (uint)datetime.now.ticks;
  • 相关阅读:
    wget/curl查看请求响应头信息
    对软件测试的理解
    负载测试、压力测试和性能测试的区别
    经典测试面试题
    软件测试的目的和任务
    为cloudstack搭建ceph文件系统
    多网卡绑定实例
    牛客多校5 A-gpa(01分数规划)
    HDU
    2018ACM-ICPC宁夏邀请赛 A-Maximum Element In A Stack(栈内最大值)
  • 原文地址:https://www.cnblogs.com/eric-qin/p/4305315.html
Copyright © 2011-2022 走看看