[C#]C#补习——静态构造函数、静态成员和常量相关
上一篇补习了类和方法,这一篇补习下类中一些静态成员和常量。
以下是本文所要介绍的内容:
1、静态构造函数
2、静态成员与常量
一、静态构造函数
前段时间经常看到园子里有朋友发面试题,其中比较有代表性的就是静态构造函数了,有兴趣的朋友可以搜索下看看,我这边也就顺便补习下静态构造函数的知识:
1、静态构造函数永远优先与其他构造函数。
2、静态构造函数是在首次访问所在类的第一个成员时进行的,并且只会执行一次。
3、静态构造函数没有参数,不需要任何访问修饰符,有.NET runtime运行。
4、类中一旦包含静态构造函数,那么编译器会自动插入一段检查代码负责检查所有静态成员和构造,以确保其优先运行。
所以在了解了以上知识后再看下面的代码就会清楚很多:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | class Class1 { public static string str = "fsdafdsa" ; public static readonly Class1 anobject = new Class1(); static Class1() { System.Console.WriteLine( "静态构造函数调用" ); } private Class1() { } public static Class1 c() { return new Class1(); } } static void Main( string [] args) { string s = Class1.str; Class1 temp =Class1.c(); Console.WriteLine( "程序开始" ); Console.ReadLine(); } |
结果输出时,字符串“静态构造函数调用”会第一个被输出,这是因为string s = Class1.str; 这句代码已经访问了类中的成员了,符合上面的第2条。
二、静态成员与常量
对于类来说,一个类中可以包含许多成员,而且大部分成员都可以是静态的,比如:变量、属性、方法等。同样需要注意的有以下几点:
1、如果不包含静态构造函数,那么静态字段会在访问类的任何静态字段时候进行初始化及赋值。
2、除非需要访问一个静态字段,否则不必对静态成员进行初始化。
3、对于静态类,在IL的最终标记为abstract和sealed。
在为字段设定是否为常量(const)或只读(readonly)时,需要注意:
1、const常量会在编译时就固定,所以常量建议是不会更改的变量,否则如果一旦发生更改且没有重新编译那么程序访问的还是老的值,所以对于可能会更改的值还是设置为readonly。
2、当将变量数组设置为readonly的时候,其数组的长度是无法更改的,但是其中的值是可以更改的。
3、应用了readonly的变量可以在构造函数中对其进行更改。
出处:http://kyo-yo.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?