不忘本~静态构造函数
静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。
在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数.(注意,当你在本地调试一个网站项目中设置静态构造函数的话,它在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 }
分类:
其它 / 面向对象
, 其它 / ASP.NET
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了