review——C# (1)静态构造函数

静态构造函数详解
本文介绍了静态构造函数的概念及其与实例构造函数的区别,包括初始化时机、语法特点等,并通过示例展示了静态构造函数如何初始化类的静态字段。

FROM P102

构造函数也可以声明为static。实例构造函数初始化类的每个新实例,而static构造函数初始化类级别的项。通常,静态构造函数初始化类的静态字段。

--初始化类级别的项的时间:

□在引用任何静态成员之前

□在创建类的任何实例之前

--静态构造函数在以下方面与实例构造函数类似

□静态构造函数的名称必须和类名相同

□构造函数不能返回值

--静态构造函数在以下方面和实例构造函数不同

□静态构造函数声明中使用static关键字

□类只能有一个静态构造函数,且不能带参数

□静态构造函数不能有访问修饰符

以下即为一个静态构造函数的示例。其形式和实例构造函数相同,只是增加了static关键字。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace review
 8 {
 9     class class1
10     {
11         public static int z;
12         int t;
13         static class1()
14         {
15 
16         }
17     }
18     class class2
19     {
20         public static int z;
21         int t;
22         static class2()
23         {
24             z = 1;
25         }
26     }
27     class Program
28     {
29         static void Main(string[] args)
30         {
31             class1 p = new class1();
32             Console.WriteLine(class1.z.ToString());
33             class2 q = new class2();
34             Console.WriteLine(class2.z.ToString());
35             Console.Read();
36         }
37     }
38 }

输出为:

0

1

通过这个例子,我们可以了解到:

1、之前所了解到的,在自己未写构造函数时,编译器会自动加上一个无参的默认构造函数。对于这一点,静态构造函数不包含在内,即就算自己写了静态构造函数,但如果没写其他构造函数,那么编译器仍然会自动加上一个无参的默认构造函数。

2、静态字段如果没有赋初值,也会像类字段一样,用空值作为默认值。(对于这里的int就是用0作为默认值)

 

关于静态构造函数,一些其他需要注意的有:

--类既可以有静态构造函数也可以有实例构造函数

--如同静态方法,静态构造函数不能访问所在类的实例成员,因此也不能使用this访问器

--不能从程序中显示调用静态构造函数,系统会自动调用它们,在:

类的任何实例被创建之前

类的任何静态成员被引用之前

 

转载于:https://www.cnblogs.com/quintessence/p/9098090.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值