<code>靜态構造函數用于初始化任何靜态資料,或用于執行僅需執行一次的特定操作。</code>
<code>在建立第一個執行個體或引用任何靜态成員之前,将自動調用靜态構造函數</code>
class Program
{
static void Main(string[] args)
{
static_construct sc = new static_construct(); //這裡它執行了普通構造方法和靜态構造方法
static_construct sc2 = new static_construct(); //這裡靜态構造方法就不會被執行了,它隻在第一個類執行個體時被執行
Console.WriteLine(static_construct.A);
Console.ReadKey();
}
}
class static_construct
static int a = 0;
public static_construct()
a += 1;
static static_construct()
a += 3;
public static int A { get { return a; } }
public static string Info { get; set; }
以下是一個樹型部門的例子:
public class DepartmentsService : IDepartmentsService
static Data.OA.IDepentmentsRepository iDepentmentsRepository = new Data.OA.DepentmentsRepository();
static List<Entity.OA.Department> entitiesList = null;
/// <summary>
/// 靜态構造方法,在使用任何靜态成員之前會被提前執行
/// </summary>
static DepartmentsService()
Reload();
internal static void Reload()
entitiesList = (from pc in iDepentmentsRepository.GetDepentments()
orderby pc.DeptName ascending
select pc).ToList();
#region 樹型部門清單
/// 虛拟産品類别
/// <returns>虛拟産品類别清單</returns>
public static Entity.OA.Department GetTree()
Entity.OA.Department root = new Entity.OA.Department();
try
{
root = entitiesList.Single(
item => item.DeptID.Equals(Entity.OA.Department.ROOTID));//擷取跟節點
GetSubs(root);
}
catch (InvalidOperationException ex)
ex.ToString();
return root;
/// 根據父對象,找到子孫樹
/// <param name="father">父對象</param>
static public void GetSubs(Entity.OA.Department father)
father.SubList = entitiesList.Where(item =>
item.ParentID.Equals(father.DeptID)).ToList();
father.SubList.ForEach(item =>
item.Father = father;
GetSubs(item);
});
#endregion
}