c# 常量(const) 使用的注意事项

2023-05-16

在我们编码的过程 ,const 是我们经常用到的一种声明类型,如果不了解const的运行机制,有时候会发生一些莫名其妙的bug,可能让我们掉入深坑中。

  接下来我们一起看看常量的应用吧!

1.常量默认是静态类型,所以不能和static一起使用

2.常量是在编译时计算的,它的表达式中不能包含变量:

       如  const  int a= b+1; 这样编译不能通过的

      如果 const int b=1; const int a=b+1;  这样是正确的

3.常量在编译时已经计算复制了,在程序运行过程中 ,不允许被修改的!

4.常量当被跨程序集直接引用的时候,常量的值会被保存到引用的程序集中,当下次该常量被修改时,只编译常量所在的项目,引用该常量的程序集未编译的话,则引用该常量程序集的常量值不会改变,还是之前的常量值!我们通过代码来验证一下:


我们首先在ConstTest中定义一个 Test 类,其中包含一个常量和一个静态变量,分别给它们初始化。


然后在控制台中引用,分别打印一下这两个类型的值


 好了,输出的值跟我们预想的一样吧!

接下来,我们把Test的中两个属性值改变一下。


改变完值后,我们在最ConstTest编译一下,然后把生成的.dll文件拷贝到 控制台的exe目录下


我们在运行一下控制台程序


咦。常量的值没有改变,静态变量的值改变了。

由此验证了,当常量被跨程序集直接引用时,常量的值会存在引用程序集中。所有遇到这种情况,需要引用程序集也要编译生成!

如果有不同观点,非常欢迎交流学习!谢谢!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c# 常量(const) 使用的注意事项 的相关文章

  • 指针常量与常量指针的区别、const 数组

    指针常量与常量指针 const 数组 一 指针常量指针本身是常量 二 常量指针指向常量的指针 三 实例四 const 数组 一 指针常量 指针本身是常量 span class token comment 指针本身不能被修改 span spa
  • 安装spconv时遇到‘remove_const_t’ is not a member of ‘std’

    主要是由于cmake的版本太高或者太低 xff0c 导致编译错误 xff0c 将版本设置为3 14 4时 xff0c 再次编译没有再发生错误
  • const

    const是一个限定符 xff0c 被const限定的变量其值不会被改变 目录 1 修饰变量 2 修饰指针 3 修饰引用 4 修饰成员函数 5 宏定义 define 和 const 常量 1 修饰变量 指向的变量的值不可改变 xff0c 次
  • c# 常量(const) 使用的注意事项

    在我们编码的过程 xff0c const 是我们经常用到的一种声明类型 xff0c 如果不了解const的运行机制 xff0c 有时候会发生一些莫名其妙的bug 可能让我们掉入深坑中 接下来我们一起看看常量的应用吧 xff01 1 常量默认
  • warning:initialization discards ‘const’ qualifier from pointer target type 解决方法

    initialization discards const qualifier from pointer target type 意思是 xff0c 初始化时丢掉了 xff08 目标类型的 xff09 const 限定符 eg const
  • 关于‘QByteArray::operator QNoImplicitBoolCast() const’ is private

    home hins Qt5 9 8 5 9 8 gcc 64 include QtCore qbytearray h 436 error QByteArray operator QNoImplicitBoolCast const is pr
  • 指向常数的“万能”指针:const void*在qsort的应用

    qsort函数 函数的原型 xff1a void qsort void base size t num int comparator const void const void 参数解释 xff1a 很简单理解 xff0c 第一个参数就是待
  • #define和const的区别

    这个区别用从几个角度来说 xff1a 角度1 xff1a 就定义常量说的话 xff1a const 定义的常数是变量 也带类型 xff0c define 定义的只是个常数 不带类型 角度2 xff1a 就起作用的阶段而言 xff1a def
  • void fun() const{}; const void fun(){}; 和void const fun(){}; 的区别?

    const void fun 和void const fun 两个相同 如果采用 34 按址传递方式 34 的函数返回值加const 修饰 xff0c 那么函数返回值 xff08 即地址 xff09 的内容不能被修改 xff0c 该返回值只
  • [原创][错误分析][Error] ‘stdios_baseios_base(const stdios_base&)‘ is private

    报错情况 在devc 43 43 中编写与C 43 43 类运算符重载时出现的了错误提示 编译器定位到的错误位置为ios base h下的 span class token keyword private span span class t
  • var let const 详细区别

    用了ES6已经有一段事件了 xff0c 也看了很多文档 xff0c 以前觉得不用写一个文档总结 xff0c 但是经过一段时间的接触以后 xff0c 认为自己还是有必要去吧他们的区别详详细细的总结一下 块级作用域 白话一点就是在 中就是一个块
  • invalid conversion from ‘const char*’ to ‘char*’解决方法

    string类的c str函数返回的是const char类型 xff0c 如果将它用作实参传递给char的形参就会报这个错误解决方法 xff1a 在调用是加 char 转换一下 xff0c 比如 char cfgfile c str
  • [C/C++] const 详解(修饰变量、输入参数、返回值、成员函数)

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

    1 define是预编译指令 xff0c const是普通变量的定义 xff0c define定义的宏是在预处理阶段展开的 xff0c 而const定义的只读变量是在编译运行阶段使用的 2 const定义的是变量 xff0c 而define
  • C语言学习笔记->const和define区别

    1 define 是预编译指令 xff0c 而const 是普通变量的定义 define定义的宏是在预处理阶段展开的 xff0c 而const定义的只读变量在编译运行中使用 2 const定义的是变量 xff0c 而define定义的是常量
  • C++中#define和const的区别

    一 define是预处理指令 xff08 pre processor directive xff09 而const是关键字 define用于给一些值定义名称 字符串 xff0c 这样定义的字符串在C C 43 43 中称为宏定义 xff0c
  • ubuntu(15):对‘casadi::MX::MX(casadi::MX const&)’未定义的引用

    catkin build 编译报错 xff0c 找不到CASADI的头文件目录CASADI INCLUDE DIRS或者库文件也达不到CASADI LIBRARIES xff1b 对 casadi MX horzsplit casadi M
  • C语言--符号常量

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

    const const修饰的值为常量 是不可改变的 在c 语言中是不可改变的 而在C语言中 我们可以通过指针去修改那一片地址的值 const修饰的指针 表面指针指向或者指针的值是不可被修改的 我们可以通过通配符 的位置来判断 在左说明修饰的
  • 【转】C++类(Class)总结,经典易懂

    C 类 Class 总结 一 C 类的定义 C 中使用关键字 class 来定义类 其基本形式如下 class 类名 public 行为或属性 protected 行为或属性 private 行为或属性 示例 定义一个点 Point 类 具

随机推荐

  • SVN项目迁移到Git方法

    本文记录如何将SVN项目迁移到Git xff0c 并保留提交日志信息 目录 Git和SVN差异环境准备Git安装 配置 项目迁移1 将源SVN库转换到Git本地仓库2 添加Git远程库地址3 推送代码到Git 常见错误参考文档 Git和SV
  • Python日志系统logging使用介绍

    日志记录对于软件开发调试和运行都非常重要 Python标准库提供了一个日志记录系统 xff0c 可以很方便的在python项目中添加日志记录 本文将详细介绍如何使用python的 logging 模块来记录日志 目录 基础使用日志级别基本配
  • xrdp连接太多后,连接不上的解决方法

    因为每次都是新建连接 xff0c 端口不断被占用 默认session个数10个 有一个最简单的 xff0c 但是不推荐的办法 xff0c 就是把最大连接数改大 xff0c 比如原来是10 xff0c 就改为100 这种方式治标不治本 xff
  • Python中 os.popen、os.system和subprocess.popen方法介绍

    Python 提供了多种与操作系统交互的方法 xff0c 比如os模块中的popen和system方法 xff0c 此外 xff0c Python subprocess模块中的Popen类也提供了与操作系统交互的方法 xff0c 使用起来更
  • 性能测试工具 IxChariot:Tcl脚本调用方法介绍

    ixChariot是一款功能强大的性能测试软件 xff0c 可用来测试有线和无线性能 xff0c 可以模拟真实应用程序流量 xff0c 并提供关键性能指标 xff0c 包括吞吐量 丢包 抖动 延迟 MOS等 本文简单介绍如何使用IxChar
  • 代码评审平台Gerrit安装配置方法介绍

    Gerrit是一款开源免费的基于 web 的代码审查工具 xff0c 是基于 Git 的版本控制系统 在代码入库之前对开发人员的提交进行审阅 xff0c 检视通过的代码才能提交入库 本文记录如何安装部署gerrit平台 目录 Gerrit简
  • Windows远程执行进程工具psexec和wmiexec介绍

    在自动化测试或者自动化工具开发中 xff0c 通常需要向其它电脑或者服务器发送指令 xff0c 比如Windows发送命令到Linux服务器开启某个服务进程 xff0c 或者读取状态信息 xff0c 我们可以使用ssh协议实现 如果Wind
  • ubuntu下连接小米2

    一 usb连接 xff1a 在Ubuntu挂载使用MTP设备步骤如下 xff1a 1 将MTP设备连接至PC机 2 如果是第一次使用MTP设备需要安装以下软件 xff0c 否则可以跳过此步骤 xff1a sudo apt get insta
  • interp2函数

    interp2 功能 二维数据内插值 格式 1 ZI 61 interp2 X Y Z XI YI X Y是原始数据 xff0c 相当于坐标 xff0c 类似于meshgrid的坐标范围 Z是在上述坐标下的数值 xff0c 也就是在坐标 x
  • RoboMaster视觉教程(0)绪论

    背景 大四毕业了 xff0c 想着大学四年也需要总结一下 就从RoboMaster这个比赛写起吧 我是大二参加的比赛 xff0c 做视觉识别部分 当时的想法很简单 xff0c 因为很喜欢Linux不想焊板子调电控就参加了视觉部分 xff08
  • RoboMaster视觉教程(5)目标位置解算(通过像素点获取转角)

    RoboMaster视觉教程 xff08 5 xff09 目标位置解算 xff08 通过像素点获取转角 xff09 概览直接使用像素坐标的缺陷摄像头标定根据小孔成像原理得到需要的转角角度测量验证 概览 在识别到目标后 xff0c 有一个很重
  • linux shell编程时bad substitution的解决办法

    今天在练习shell编程 xff0c 之前在系统中增加了很多stu 的用户 xff0c 现在想把这些用户名都找出来 xff0c 于是用了下面的几行代码 xff1a find stu users for i in awk F 34 34 39
  • docker安装Rstudio

    下载 xff1a docker pull rocker rstudio 4 0 4 而Rstudio官方提供了带不同R版本的镜像供使用 xff0c 点击https hub docker com r rocker rstudio tags即可
  • Debian下virtualBox增强功能出错的注意事项

    安装好Debian后 xff0c virtualBox下选择安装增强功能 xff1a 在 设备 菜单中选择 安装增强功能 xff0c 桌面上出现一个 VBOXADDITIONS 4 1 6 74713 图标 打开终端 xff0c 切换到ro
  • Seata分布式事务方案--AT(Auto Transaction)模式

    在业务发展初期 xff0c 一块大饼 的单业务系统架构 xff0c 能满足基本的业务需求 但是随着业务的快速发展 xff0c 系统的访问量和业务复杂程度都在快速增长 xff0c 单系统架构逐渐成为业务发展瓶颈 xff0c 解决业务系统的高耦
  • 使用maven构建jar包并拷贝到指定目录

    小记 xff1a 主要是为了迎合公司微服务项目 xff0c 同时是对已有技术的实践整理 使用spring boot maven plugin构建构建jar包 xff1b 使用maven surefire plugin跳过测试类 xff1b
  • mfc的CTreeCtrl控件实现windows的资源管理器

    BOOL Cwp8MtpTestDlg OnInitDialog CDialog OnInitDialog 设置目录树样式 DWORD dwStyle 61 GetWindowLong m pcTreeCtrl m hWnd GWL STY
  • linux安装maven私服

    下载Nexus Download Archives Repository Manager OSS 上面的地址暂时下载不了 使用百度云盘 百度网盘 链接不存在 提取码zw6g 安装需要jdk请先安装jdk 1 下载上传到服务器上并解压 nex
  • springboot设置并获取启动参数

    springboot设置参数并获取参数的方式 下面以端口号为例 设置端口号的方式有三种 xff1a 1 xff09 通过java程序启动命令行参数设置或者是idea的Program arguments设置 java jar test jar
  • c# 常量(const) 使用的注意事项

    在我们编码的过程 xff0c const 是我们经常用到的一种声明类型 xff0c 如果不了解const的运行机制 xff0c 有时候会发生一些莫名其妙的bug 可能让我们掉入深坑中 接下来我们一起看看常量的应用吧 xff01 1 常量默认