類初始化在代碼中隨處可見,但是用靜態class和用實例class時應該遵循那些原則呢? 1、如果一個類定義成實例的,那麼這個類的全部成員儘量都定義成實例的 2、如果一個類是要共用一些成員,那麼所有成員都定義成靜態的,類本身也定義成靜態的 有些時候我們可能會實例成員和靜態成員混合定義,但是不建議這樣做 ...
類初始化在代碼中隨處可見,但是用靜態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()一直占用著的記憶體地址得不到釋放,也不能被調用。所以不建議大家使用混合類。
你有什麼觀點,請指教,歡迎補充!