zoukankan      html  css  js  c++  java
  • c#中const和readonly区别

    一:概念

    const 关键字用于定义常量。它在赋初始值后不能被修改。常量字段是隐式静态的。不允许在常数声明中使用 static 修饰符。
    readonly 关键字是只读字段数据。和常量相似,不能在赋初始值后改变。和常量不同的是只读字段可以在运行时决定,因此在构造函数作用域中进行赋值时合法的(其他地方不行)。
    static readonly 静态只读字段,只读字段不是隐式静态的,所以要在类级别公开,就必须显式使用static关键字。

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

    2.const只能被声明为简单的数据类型(内建的int和浮点型)、枚举或字符串不能用new关键字初始化一个静态常量,即便是对一个值类型来说。 readonly 可以是任意的数据类型

    //这样是错误的
    public const DateTime myDateTime = new DateTime(2006,9,1,0,0,0);
    //这样是可以的
    public static readonly DateTime myDateTime = new DateTime(2006,9,1,0,0,0);

    总结:const外部不能对其赋值,而readonly外部可以(只能在构造函数中)对其赋值。

  • 相关阅读:
    Linux mysql 联表查询
    Linux firewalld使用教程+rhce课程实验
    Linux 常用端口
    Linux redhat 7 进入单用户模式
    Linux 子网掩码计算, 二进制十进制互相转换
    Linux 网络配置文件解析
    P1678 烦恼的高考志愿(二分)
    P1563 玩具谜题(简单模拟)
    P1553 数字反转(升级版)(模拟)
    P2690 接苹果 (DP)
  • 原文地址:https://www.cnblogs.com/zhxhdean/p/2023324.html
Copyright © 2011-2022 走看看