【C#】关键字const、readonly、static三者的区别

C# static、 const和readonly区别 const Static reado 阅读详情

const

静态常量,也称编译时常量(compile-time constants),属于类型级,通过类名直接访问,被所有对象共享!
1、叫编译时常量的原因是它编译时会将其替换为所对应的值;
2、静态常量在速度上会稍稍快一些,但是灵活性却比动态常量差一些;
3、静态常量,隐式是静态的,即被static隐式修饰过,不能再用static重复修饰;
4、在声明时初始化;
5、静态常量只能被声明为简单的数据类型(内建的int和浮点型)、枚举或字符串。
6、应用场合例如:Math.PI的定义(要声明一些从不改变且处处唯一的常量,就应该使用静态常量)

readonly

动态常量,也称运行时常量(runtime constants),属于对象级,通过对象访问。
1、而动态常量的值是在运行时获得的;
2、动态常量在性能上稍差一点,但是灵活性比前者好;
3、readonly可以被static修饰,这时的static readonly和const非常相似;
4、在声明是初始化,在构造函数里初始化;(static readonly常量,如果在构造函数内指定初始值,则必须是静态无参构造函数;)
5、动态常量可以是任意的数据类型。
6、应用场合例如:SqlHelper类的连接字符串定义

以上二者差别

静态常量在编译时会将其替换为对应的值,这就意味着对于不同的程序集来说,当你改变静态常量的时候需要将其重新编译,否则常量的值不会发生变化,可能引发潜在的问题,而动态常量就不会有这种情况,此时推荐使用static readonly,因为其是运行时赋值,而常量值被更改,运行时也随之更改。

static

本不应该把static 与前两者放在一起 区别对待的,但是static经常和它们搅在一起,所有这里特别把它拿来说个事。static的意义与const和readonly迥然不同,static是指所修饰的成员与类型有关,而与对象无关。
静态字段和静态构造方法,通常适用于一些不会经常变化而又频繁使用的数据,比如连接字符串,配置信息等,进行一次读取,以后就可以方便的使用了,同时也节约了托管资源,因为对于静态成员,一个静态字段只标识一个存储位置。
非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。

总结

const 是编译时常量,readonly是运行时常量;const较高效,readonly较灵活。在应用上以static readonly代替const,以平衡const在灵活上的不足,同时克服编译器优化const性能,所带来的程序集引用不一致问题

引用

高速设计注意事项总结——MDI篇 在以太网高速通信系统中,MDI(Medium Dependent Interface,介质相关接口)是连接物理层芯片(PHY)与传输介质(如网线)的关键接口,其设计直接影响信号完整性、传输速率和抗干扰能力。本文围绕 MDI 及 RJ45 接口电路、关键参数、设计与布线要点展开,为高速以太网设计提供参考。本文包含MDI 及 RJ45 接口电路组成、电路设计注意事项、布局布线要求等内容 阅读详情

相关推荐

5分钟搞定!用MCU GPIO实现零功耗一键开关机电路(附完整原理图)

本文详细介绍了如何利用MCU GPIO设计零功耗一键开关机电路,适用于便携式设备和电池供电项目。通过软硬件结合的方式,实现关机状态下的真正零功耗,同时提供智能开关机控制。文章包含完整原理图、元件选型指南和实际搭建技巧,帮助开发者在5分钟内完成高效电源管理方案。

weixin_28339967的博客 341

C#中const、static、readonly的区别

一、 const与readonly ①【const】其修饰的字段只能在自身声明时初始化。 ②【Readonly】是只读变量,属于运行时变量,可以在类初始化的时候改变它的值。该类型的字段,可以在声明或构造函数中初始化。 ③小结: 《1》根据所使用的构造函数,readonly 字段可能具有不同的值。 《2》对于每一次编译后的结果,const的值是固定的,而readonly的值是可以在运行的时...

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 3305

如何利用CN3791实现太阳能电池板对锂电池的高效充电管理

本文详细介绍了如何利用CN3791芯片实现太阳能电池板对锂电池的高效充电管理。CN3791集成了MPPT(最大功率点跟踪)功能,能智能调节太阳能板的输出,确保在不同光照条件下获得最大功率。文章涵盖芯片工作原理、外围电路设计、充电全过程管理及实际应用经验,帮助开发者优化太阳能充电系统效率。

weixin_33709219的博客 499

C#中的static、readonly与const的比较

C#中有两种常量类型,分别为readonly(运行时常量)与const(编译时常量),本文将就这两种类型的不同特性进行比较并说明各自的适用场景。 工作原理     readonly为运行时常量,程序运行时进行赋值,赋值完成后便无法更改,因此也有人称其为只读变量。     c

High_Mount的专栏 2万+

毕设案例|保安公司智慧管理系统的建设与开发方案

"保安公司智慧管理系统是一款专为保安行业设计的高效信息化解决方案,其核心功能涵盖了从人力资源管理到业务运营的各个方面。系统以Java作为开发语言,结合SpringMVC框架,确保了稳定性和可扩展性,而MySQL数据库则提供了强大的数据存储和处理能力。首先,系统允许用户设置各类保安,如门卫、巡逻员等,实现精细化分类管理。其次,保安信息管理模块包括详细的人事档案、资格证书、培训记录等,便于人员追踪和考核。部门和城市设置方便公司层级管理和异地项目管理。岗位设置与时间安排精确到分钟,确保排班科学合理。

muyu2980的专栏 935

rk3588 Android HDMI IN热插拔解决

1、公司在使用 别的厂商的板卡遇到一个问题,开机我们的app自启就会闪退,后来定位发现是camera 的open出错了,这个问题的出现是因为没有插HDMI IN输入的问题导致的,所以需要对HDMI IN的热插拔进行检测,后面我把这个问题也顺利解决了。下面是我的尝试和使用的解决办法。3、话不多说,我用的是读取系统文件实现的,但是这个方法,需要有status文件的系统读权限,可以修改设备下的/vendor/etc/init/hw/init.rk3588.rc文件修改的权限,这个问题交给自己或者厂家协商解决。

qq_54089476的博客 1918

C# const static readonly

const 和static readonly的区别。(非静态方法可以正常访问静态方法和成员)

d3582077的专栏 625

SerDes电路的PCB仿真设计规则及策略

SerDes的PCB设计中,重点工作是使用3D 电磁 (EM) 场求解器,进行过孔结构优化,包括 BGA的扇入和扇出区域以及布线的过孔区域,并且,利用连接器供应商提供加密的 3D 模型,进行连接器和 PCB 的级联仿真,最终获取系统级的通道性能参数,如插入损耗、回波损耗、串扰和模式转换、阻抗曲线等,如果发现任何缺陷,再进行进一步优化,这一过程中,推荐进行拆分仿真,以提高设计效率。

一只豌豆象的博客 2190

const、readonly和static

《叩开C#之门》系列之五 五、const、readonly和static 在第四节中,我介绍了常量的定义,其关键字就是const。在定义常量时,必须赋予其初始值。一旦赋予了初始值后,就不能修改其值。也就是所谓的常量值不能更改的含义。由于C#是一门纯粹的面向对象语言,并不存在一个常量或者变量游离于对象之外,因此,这些定义,必然都是在一个类型内完成的。 关于常量的使用,除了会用作一些算法的临时常...

weixin_33897722的博客 273

OpenCV简单应用:图像模糊处理

OpenCV是一个广泛使用的开源计算机视觉库,提供了丰富的图像处理和计算机视觉算法。本文将介绍如何使用OpenCV对图像进行模糊处理,并提供相应的源代码。该函数接受两个参数:第一个参数是输入图像,第二个参数是指定模糊核大小的元组。在这个例子中,我们使用了一个5x5的模糊核。您可以尝试不同大小的模糊核,以获得不同程度的模糊效果。函数和指定不同大小的模糊核,我们可以实现不同程度的模糊效果。该函数接受两个参数:第一个参数是窗口的名称,第二个参数是要显示的图像。在上面的代码中,我们首先使用。要运行上述代码,请将。

MwgmPhilosophy的博客 289

【PyQt】使用PyQt6基于Scenedetect制作视频场景自动分割应用

通过详细介绍PySceneDetect的功能和应用,本文阐释了如何利用这一工具提高视频编辑的效率。我们讨论了安装方法、命令行使用示例以及如何在Python脚本中集成PySceneDetect。此外文章还涵盖了基于PyQt6的图形界面设计,通过多线程技术处理视频,保证界面的响应性,并通过实时反馈机制提升用户体验。无论是专业的视频制作团队还是个人爱好者,PySceneDetect都提供了一种可行的、效率高的场景检测工具,让视频编辑工作变得更加简单快捷。

Mr数据杨 959

(三)c#中const、static、readonly的区别

const。

m0_58717895的博客 1808

3D点云-CVPR 2020-PF-Net: Point Fractal Network for 3D Point Cloud Completion

是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像素点与原来像素点比较完成模型的训练。而PF-Net就是采用GAN的思想在3D点云上的应用。

404 Not Found 2369

C# const / static / readonly

constconst定义的是静态常在对象初始化的时候赋值,以后不能改变它的值,属于编译时常量。staitcstatic 定义的是静态变量,可以再外部改变它的值。readonlyreadonly 是只读变量.属于运行时变量,可以在类初始化的时候改变它的值。Noteconst 和 static 不能在一起用。const和static readonly的确非常像,通过类名而不是对象名进行访问,在程式中只读

biezhihua的专栏 577

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

const与readonly关键字

逐条拆解每个字段 1. 修饰符: 👉 静态字段,属于类 ,不属于任何实例对象。 只是代表:只能在构造阶段赋值一次,之后不可修改, 2. 常量天生就是隐式静态的! 哪怕你不写 ,编译器也会把它当成静态。标记了 ,静态方法。 静态方法只能直接访问本类的静态成员,你这里刚好符合规则。 ❌真正的非静态(实例)成员,长这样(没有static) 编译器直接红色报错,静态类不能包含实例字段。 全局只实例化一次,程序启动就创建好。 所有地方调用NTS几何计算复用同一个对象,不用每次计算都new一个工

优快云_RTKLIB的博客 333

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

关于C#中const,readonly和static readonly的总结

我们在定义我们的常量的时候,优先选择const,const的效率更高,如果const不能用,比如:我们不是用常数,而是用一个函数的返回值给常量初始化,那么我们就使用static readonly。 例子:static readonly int a = SomeStaticClass.GetInt(); 如果用const,就会报compile-time error 关于readonly关键字:...

andyhan_1001的专栏 3333

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C# static const和readonly区别

Const 定义的是静态常在对象初始化的时候赋值.以后不能改变它的值.属于编译时常量。 Static 定义的是静态变量.可以再外部改变它的值.. Readonly 是只读变量.属于运行时变量.可以在类初始化的时候改变它的值.. const 和 static 不能在一起用 我们都知道,const和static readonly的确非常像:通过类名而不是对象名进行访问,在程式中只读等等

HelloLWei的专栏 1301

Const 和 static readonly的区别

static readonly需要注意的一个问题是,对于一个static readonly的Reference类型,只是被限定不能进行赋值(写)操作而已。而对其成员的读写仍然是不受限制的。 public static readonly MyClass myins = new MyClass(); … myins.SomeProperty = 10; //正常 myins = new MyClas...

一杯敬明天 1339

C# Const、readonly、Static区别

对于三者的关系,来彻底分解一下。1.静态常量,也称编译时常量,编译时--意味着用const定义的字段,在编译时就要确定值(也可以理解为声明时),之后无法更改。属于类型级,意思是用类名直接访问,被所有对象共享!a.编译时常量,编译时/声明时确定值,之后不能修改。b.性能比readonly稍好,灵活性差一些。c.静态常量,隐式被Static修饰,不能再用static重复修饰。d.静态常量的数据类型(内建的int和浮点型)、枚举或字符串。e.属于,意思是用类名直接访问,被所有对象共享!

Sevol_Y 1305

C# 总结const、 readonly、 static三者区别:

总结const、 readonly、 static三者区别: const:静态常量,也称编译时常量(compile-time constants),属于类型级,通过类名直接访问,被所有对象共享!   a、叫编译时常量的原因是它编译时会将其替换为所对应的值;   b、静态常量在速度上会稍稍快一些,但是灵活性却比动态常量差一些;   c、静态常量,隐式是静态的,即被static隐式修饰过,不能...

雨中深巷的油纸伞 212

如何在C#中使用const,readonly和static

在C#中编程时,经常使用关键字const,readonly和static。 但是,尽管这些关键字具有重要的区别,但它们也具有相似之处,有时很难知道何时使用它们。 本文讨论了C#中的const,static和readonly关键字,它们如何进行比较以及如何在C#应用程序中使用它们。 若要使用本文提供的代码示例,您应该在系统中安装Visual Studio 2019。 如果您还没有副本,则可以...

cxu0262的博客 615

所谓const与static的区别 const和static readonly 区别

对于C/C++语言来讲, : -----const就是只读的意思,只在声明中使用;  -----static一般有2个作用,规定作用域和存储方式.       对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;        对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函

lijun5635的专栏 1119

const关键字同static readonly 的区别

我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等。在多数情况下可以混用。二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。明白了这个本质区别,我们就不难看出下面的语句中static readon...

as972920286的博客 156

C#中static、readonly与const的区别比较

我们在定义我们的常量的时候,优先选择const,const的效率更高,如果const不能用,比如:我们不是用常数,而是用一个函数的返回值给常量初始化,那么我们就使用static readonly。 例子:static readonly int a = SomeStaticClass.GetInt(); 如果用const,就会报compile-time error 关于readonly关键字: re...

dwb5426的博客 288

c# 深入理解static const readonly区别

c# static const readonly是很类似的字段,内存占用,读写权限,原理机制都有很大的不同。

qq_17347313的博客 703

readonly,const及static的区别

一、readonly只读 1.依赖于对象==》》需要new对象,然后通过对象去访问 2.可以与static组合使用,此时用法与const用法相似但也有不同点(二者的内存分配过程不一样,static readonly在运行时分配内存,const在项目编译时直接写入内存) 3.支持任意的数据类型 4.声明时初始化 优劣势:速度较const较慢,但是灵活性较好...

ShellBakers的博客 838
上一篇: 【SQLite Administrator】SQLite Administrator打开数据库的问题
下一篇: 【.NET】应用程序域、进程、线程、CLR关系
It_sharp
博客等级 码龄10年 51粉丝 231原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值