成员变量初始化的步骤

时间:2021-07-11 03:49:58

.NET加载类时:(在静态存储区,为静态变量分配存储空间同时赋予缺省值; 下一步执行且仅执行一次1,2 ,对变量初始化)

1,先使用 = 为静态成员变量赋值,从上到下,依次赋值,没有 = 号的,缺省值;

2,执行静态构造函数,为静态成员变量赋值;

当使用类实例化时:

3,先使用 = 为实例成员变量赋值,从上到下,依次赋值,没有 = 号的,缺省值;

4,执行实例构造函数,为实例成员变量赋值;

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace 初始化
 8 {
 9     class Program
10     {
11         private string c1 = "我是=赋值的实例变量c1";
12         private string c2 = "我是=赋值的实例变量c2";
13 
14         private static string sc1 = "我是=赋值的静态变量sc1";
15         private static string sc2 = "我是=赋值的静态变量sc2";
16 
17 
18         public Program()
19         {
20             Console.WriteLine(sc1);
21             Console.WriteLine(sc2);
22 
23             Console.WriteLine(c2);
24             Console.WriteLine(c1);
25             c1 = "我是构造函数赋值的实例变量c1";
26             c2 = "我是构造函数赋值的实例变量c2";
27             Console.WriteLine(c2);
28             Console.WriteLine(c1);
29         }
30 
31         static Program()
32         {
33             Console.WriteLine(sc1);
34             Console.WriteLine(sc2);
35             sc1 = "我是静态构造函数赋值的静态变量c1";
36             sc2 = "我是静态构造函数赋值的静态变量c2";
37             Console.WriteLine(sc1);
38             Console.WriteLine(sc2);
39         }
40 
41         static void Main(string[] args)
42         {
43             Program p = new Program();
44             Console.Read();
45         }
46     }
47 }

输出结果:

成员变量初始化的步骤