類初始化在代碼中隨處可見,但是用靜態class和用實例class時應該遵循那些原則呢?
1、如果一個類定義成實例的,那么這個類的全部成員盡量都定義成實例的
2、如果一個類是要共享一些成員,那么所有成員都定義成靜態的,類本身也定義成靜態的
有些時候我們可能會實例成員和靜態成員混合定義,但是不建議這樣做,比如下面代碼
public class Person
{
public int Age = 20;
public void T1()
{
}
public static void T2()
{
}
}
public static void Main()
{
B.T2();
var instance=new Person();
}
這個類充當了靜態類和實例類兩種角色,當調用Test()時調用B.T2()系統會自動創建Person的一個實例保存在內存中,這個對象的生命周期是隨着應用程序的結束而結束,不隨着Test()執行完而釋放掉
而另一個自己創建的instance實例對象會隨着Test()執行完而釋放掉。但是系統自動創建的實例托管堆中包含着的成員Age和T1()一直占用着的內存地址得不到釋放,也不能被調用。所以不建議大家使用混合類。
會面還會完善,謝謝大家支持!
你有什么觀點,請指教,歡迎補充!