意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

不忘本~静态构造函数

来源:恒创科技 编辑:恒创科技编辑部
2024-01-25 23:31:59

​​返回目录​​

​静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。​

​在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数.(注意,当你在本地调试一个网站项目中设置静态构造函数的话,它在IE没有被关闭之前,静态构架方法为静态字段赋值是不变的,它只有再你下次运行网站时,它才会发生变化)​


不忘本~静态构造函数

1 class Program
2
3 {
4
5 static void Main(string[] args)
6
7 {
8
9 static_construct sc = new static_construct(); //这里它执行了普通构造方法和静态构造方法
10
11 static_construct sc2 = new static_construct(); //这里静态构造方法就不会被执行了,它只在第一个类实例时被执行
12
13 Console.WriteLine(static_construct.A);
14
15 Console.ReadKey();
16
17 }
18
19 }
20
21
22
23 class static_construct
24
25 {
26
27 static int a = 0;
28
29 public static_construct()
30
31 {
32
33 a += 1;
34
35 }
36
37
38
39 static static_construct()
40
41 {
42
43 a += 3;
44
45 }
46
47 public static int A { get { return a; } }
48
49 public static string Info { get; set; }
50
51

以下是一个树型部门的例子:

1 public class DepartmentsService : IDepartmentsService
2 {
3   static Data.OA.IDepentmentsRepository iDepentmentsRepository = new Data.OA.DepentmentsRepository();
4
5 static List<Entity.OA.Department> entitiesList = null;
6
7 /// <summary>
8 /// 静态构造方法,在使用任何静态成员之前会被提前执行
9 /// </summary>
10 static DepartmentsService()
11
12 {
13
14 Reload();
15
16 }
17
18
19 internal static void Reload()
20
21 {
22
23 entitiesList = (from pc in iDepentmentsRepository.GetDepentments()
24
25 orderby pc.DeptName ascending
26
27 select pc).ToList();
28
29 }
30
31 #region 树型部门列表
32
33 /// <summary>
34
35 /// 虚拟产品类别
36
37 /// </summary>
38
39 /// <returns>虚拟产品类别列表</returns>
40
41 public static Entity.OA.Department GetTree()
42
43 {
44
45 Entity.OA.Department root = new Entity.OA.Department();
46
47 try
48
49 {
50
51 root = entitiesList.Single(
52
53 item => item.DeptID.Equals(Entity.OA.Department.ROOTID));//获取跟节点
54
55 GetSubs(root);
56
57 }
58
59 catch (InvalidOperationException ex)
60
61 {
62
63 ex.ToString();
64
65 }
66
67 return root;
68
69 }
70
71 /// <summary>
72
73 /// 根据父对象,找到子孙树
74
75 /// </summary>
76
77 /// <param name="father">父对象</param>
78
79 static public void GetSubs(Entity.OA.Department father)
80
81 {
82
83 father.SubList = entitiesList.Where(item =>
84
85 item.ParentID.Equals(father.DeptID)).ToList();
86
87 father.SubList.ForEach(item =>
88
89 {
90
91 item.Father = father;
92
93 GetSubs(item);
94
95 });
96
97 }
98
99 #endregion
100

​​返回目录​​

作者:仓储大叔,张占岭,
荣誉:微软MVP



上一篇: EF中数据优先,模型优先和代码优先 下一篇: 手机怎么远程登录云服务器?