[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的变量可以在构造函数中对其进行更改。

posted @   kyo-yo  阅读(1488)  评论(6编辑  收藏  举报
编辑推荐:
· 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,谁才是开发者新宠?
点击右上角即可分享
微信分享提示