C#中的readonly与const区别

2023-05-16


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的值是可以在运行的时候才确定值的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#中的readonly与const区别 的相关文章

  • [C/C++] const 详解(修饰变量、输入参数、返回值、成员函数)

    看到const关键字 xff0c 程序员首先想到的可能是const 常量 const 更大的魅力是它可以修饰函数的参数 返回值 xff0c 甚至函数的定义体 const 是constant 的缩写 xff0c 恒定不变 的意思 被const
  • C++中的const_interator

    当我们做出如下定义时 vector lt ID gt ids vector lt ID gt const iterator iter 并进行了下面的操作 xff0c 则是正确的 for iter 61 ids begin iter 61 i
  • C++- #define 和 const 有什么区别?

    回答如下 xff1a 定义不同 xff1a define 是C 43 43 预处理器的指令 xff0c 用于定义宏 xff0c const是C 43 43 关键字 xff0c 用于定义常量 作用对象不同 xff1a define 定义的宏
  • C语言--符号常量

    在C语言中 可以用一个标识符来表示一个常量 称之为符号常量 其特点是编译后写在代码区 不可寻址 不可更改 属于指令的一部分 一 符号常量定义用 define 符号常量在使用之前必须先定义 其一般形式为 形式为 define 标识符 常量 e
  • c++之const指针

    我们知道 const可以修饰一般的变量 这样的变量我们称之为常变量 常变量的值是不能修改的 const也可以修饰指针变量 可以指定指针变量是一个常量 或者指定指针变量指向的对象是一个常量 有以下几种情况 一 指向常量的指针变量 const
  • const关键字与指针

    const关键字与指针 1 指针包含的地址是常量 不能被修改 但可以修改指针指向的数据 int x 10 int const p x p 34 指向的数据可以修改 int y 32 p y 不能修改P指向的地址 2 指针指向的数据是常量 不
  • ES6中const详解

    我们使用const声明常量时 总认为值一旦声明就不可改变 然后我发现在定义对象时 对象的值是可以改变的 对于数值 var message Hello let age 25 以下两行都会报错 const message Goodbye con
  • Javascript 字符串对象只读?

    a new String Hello a 0 H true a 0 J a 0 J false a 0 H true 这是否意味着我只能使用字符串作为字符数组 split 进而 join ANSWER 是的 在Javascript stri
  • SQLAlchemy - 如何映射只读(或计算)属性

    我试图弄清楚如何映射一个简单的只读属性 并在保存到数据库时触发该属性 一个人为的例子应该可以让这一点更加清楚 首先 一个简单的表格 meta MetaData foo table Table foo meta Column id Strin
  • 与特定用户以只读方式共享 GitHub 上的私有 git 存储库

    我终于想学习如何 git 所以我正在 GitHub 上写一篇关于版本控制的相当广泛的论文 我有一个freeGitHub pro 帐户 感谢我的大学 所以我可以添加私人存储库 我需要添加我的主管 以便他可以访问这些文档 但我希望他的 GitH
  • 在 Django 表单中,如何将字段设为只读(或禁用)以使其无法编辑?

    在 Django 表单中 如何将字段设为只读 或禁用 当使用表单创建新条目时 应启用所有字段 但当记录处于更新模式时 某些字段需要为只读 例如 当创建一个新的Item模型中 所有字段都必须是可编辑的 但是在更新记录时 有没有办法禁用sku字
  • 如何使实体框架数据上下文只读

    我需要向第三方插件公开实体框架数据上下文 目的是允许这些插件仅获取数据 而不是让它们发出插入 更新或删除或任何其他数据库修改命令 因此 我怎样才能使数据上下文或实体只读 除了与只读用户连接之外 您还可以对 DbContext 执行一些其他操
  • 通过客户端脚本更改时访问服务器端只读文本框值的解决方法

    我在网格视图的每一行都有一个日期文本框 由于不允许用户在文本框中输入自己的值 因此我们将该属性设置为 ReadOnly true 并提供了一个日历java脚本插件来设置Textbox值 现在 当我尝试在保存单击时访问日期文本框时 文本框值不
  • 与 Hibernate 的只读数据库连接

    是否可以使用 Hibernate 并通过只读连接连接到数据库 我将从事一个项目 该项目需要连接到现有数据库 从中提取数据 并在应用程序中进行一些复杂的数据操作 在整个过程中 我无法更改数据库中的任何内容 因此需要只读连接 我的第一个想法是使
  • 输入文本元素的正确只读属性语法是什么?

    和大多数人一样 我熟悉readonly属性为text input 但是在阅读其他网站的代码时 我的一个讨厌的习惯 我看到了该属性的多个实现
  • 在核心数据持久存储中传送静态(只读)数据的正确方法是什么?

    我想发送静态只读数据以在我的核心数据模型中使用 问题是 存在明显不同的持久存储类型 我不知道这些类型的格式是否应该是不透明的 或者我是否应该能够手动构造它们 现在我只有一个 plist 而且非常小 总共可能有 30 个条目 我是否应该在首次
  • 为什么 readonly 和 volatile 修饰符是互斥的?

    我有一个引用类型变量readonly 因为引用永远不会改变 只会改变它的属性 当我尝试添加volatile编译警告我它不会让两个修饰符应用于同一个变量 但我认为我需要它是易失性的 因为我不想在读取其属性时出现缓存问题 我错过了什么吗 还是编
  • 如何在Eclipse中制作只读编辑器(Eclipse插件开发)

    我想知道如何制作一个真正只读的 Eclipse 编辑器 我的编辑器扩展了文本编辑器 所以当我重新实现方法时是可编辑的总是回来false 这是最简单的方法 可以防止用户在编辑器中打开的文档中键入或删除任何内容 但您仍然可以更改文档的内容 例如
  • 在docker中挂载两个嵌套的只读挂载点

    我有一个docker compose文件运行 PHP 并以嵌套方式安装一些卷 它已经工作了两年了 最近我又尝试了一次 但失败了 至少在 Docker for WSL 2 上是这样 以下是 docker compose 文件中挂载的卷 vol
  • 静态字符串文字表?

    在 C 中创建全局静态字符串表的正确方法是什么 我所说的 全局 是指 可从包含标头的任何文件中使用 但不是某些运行时创建的单一对象的一部分 我所说的 静态 是指 尽可能少地设置运行时间 只读内存页中的数据 每个应用程序只有 1 个数据实例

随机推荐

  • Java高级特性反射与动态代理模式

    文章目录 前言一 了解反射二 继续了解反射 xff08 哈哈哈 xff09 1 每一个类对应的class放在哪里 xff1f 2 这个class里面都保存了什么3 如何使用 xff1f 3 1 获取类加载器3 2 获取构造器对象3 3 获取
  • Unity3D 使用SceneManager跳转/加载场景

    很久没有更新博客了 xff0c 最近也是还在学习U3D 下面写一下使用SceneManager跳转 加载场景 我们假设要点击一个按钮跳转 xff0c 那么我们只要把跳转的代码写进按钮点击事件里就好了 其实加载场景很简单 xff0c 只需要写
  • Hisat2 Bowtie2比对结果解读

    Bowtie的中文意思是 xff1a 领结 xff0c 蝴蝶结 Bowtie2用户手册 xff1a http bowtie bio sourceforge net bowtie2 manual shtml 在看比对结果前需要了解三个概念 x
  • React 项目启动报错:The “path” argument must be of type string

    今天下载一个旧的React项目 xff0c yarn start 运行 xff0c 报错 xff1a TypeError ERR INVALID ARG TYPE The path argument must be of type stri
  • Android 身份认证基本概念

    身份验证 Android 采用通过用户身份验证把关的加密密钥机制 xff0c 该机制需要以下组件 xff1a 加密密钥存储和服务提供程序 存储加密密钥并基于这些密钥提供标准加密例程 Android 支持由硬件支持的密钥库和 Keymaste
  • Gnome增加消息提醒extension 适用于聊天工具如xchat "message notifier" "notifications alert" "permanent notification&quo

    使用如xchat这样的聊天工具 xff0c 有人跟你说话时 xff0c 在KDE桌面中 xff0c 默认系统托盘中的xchat托盘会闪烁 xff0c 直到你点击将xchat切换到前台 xff0c 这是xchat在preference可以设置
  • 读取文件报错:FileNotFoundError: [Errno 2] No such file or directory

    文章目录 问题描述问题分析解决办法 问题描述 使用 img 61 Image open 39 data DSC 8923 jpg 39 读取一张图片时 xff0c 报 FileNotFoundError Errno 2 No such fi
  • CentOS7离线安装图像化界面踩坑及脱坑历程

    CentOS7离线安装图像化界面 背景安装问题尝试一 xff1a 尝试二 xff1a 其他问题总结 背景 很久之前实验室的一台服务器安装了CentOS 7 6 1810版本的linux系统 xff0c 然而当时安装系统的同学不知出于什么目的
  • Eslint 配置及规则说明

    中文官方网站 基本使用教程 安装 可以全局安装 xff0c 也可以在项目下面安装 如下是在项目中安装示例 xff0c 只需要在 package json 中添加如下配置 xff0c 并进行安装 xff1a gt 34 eslint 34 3
  • Ubuntu自动登录图形系统界面(免密码、开机自启动)

    Ubuntu自动登录图形系统界面 xff08 免密码 开机自启动 xff09 操作系统版本 xff1a 18 04 修改50 unity greeter conf xff0c 使其允许root登录 span class token func
  • 学C++有多难,你知道吗?

    都2020年了 xff0c 还要学C 43 43 吗 xff1f C 43 43 好多理工科大学里面都有 xff0c 它的学习难度比其他编程语言比如Python Javascript 和Java等等难 那为什么呢 xff1f C 43 43
  • 搞懂Java高级特性--注解

    1 注解是什么 xff1f Java注解 xff08 Annotation xff09 又称Java标注 xff0c 是JDK5 0引入的一种注释机制 xff0c 注解是元数据的一种形式 xff0c 提供有关于程序但不属于程序本身的数据 x
  • 为什么都说代码改变世界?是因为这五位程序员创造了未来!

    致敬那些为软件开发奠定坚实基础的计算机科学先驱 从 1 和 0 开始 xff0c 编程经历了很长一段路 xff0c 才达到了现在的抽象状态 过去的程序员用伟大的发明 xff0c 为现代程序员轻松地完成工作奠定了坚实的基础 如果我们研究某个软
  • 编译提示缺少libjli.so,jar command not found,javadoc错误等

    这周一周忙于Ubuntu server环境下的Android编译环境的搭建 xff0c 由于刚开始真正使用Linux xff0c xff08 以前虽然用过Ubuntu xff0c 但是就当win用了 就这样还没坚持下来 xff0c 现在工作
  • 银河麒麟系统4.0.2离线安装MySQL教程

    银河麒麟系统4 0 2离线安装MySQL教程 xff08 Ubuntu离线安装MySQL教程 xff09 https www jianshu com p 478dc7c9b9e0 这个教程很详细 xff0c 我不再多说 xff0c 而且亲测
  • 实现线程同步的几种方式

    在多线程中线程的执行顺序是依靠哪个线程先获得到CUP的执行权谁就先执行 xff0c 虽然说可以通过线程的优先权进行设置 xff0c 但是他只是获取CUP执行权的概率高点 xff0c 但是也不一定必须先执行 在这种情况下如何保证线程按照一定的
  • STC开天斧虚拟示波器使用

    开天斧外观图 xff0c 颜值非常可以 1 在keil中添加STC8H8K64U的型号和头文件 xff0c 添加功能在STC IPS软件里 首先点击Keil仿真设置 xff0c 然后选择单片机型号STC8H8K64U xff0c 然后点击添
  • android AlertDialog 弹窗自定义布局 点击外部不关闭弹窗

    AlertDialog span class token punctuation span Builder builder span class token operator 61 span span class token keyword
  • delete释放new[] 以及 delete[]释放new 的问题

    在同花顺 的笔试过程中遇到这么一个类似问题 A ptr 61 new A 10 for int i 61 0 i lt n i 43 43 delete amp ptr i 由此衍生出两个问题 new 申请的空间用delete释放会发生什么
  • C#中的readonly与const区别

    xfeff xfeff const 的概念就是一个包含不能修改的值的变量 常数表达式是在编译时可被完全计算的表达式 因此不能从一个变量中提取的值来初始化常量 如果 const int a 61 b 43 1 b是一个变量 xff0c 显然不