C#實例化和靜態(tài)類對象調(diào)用對比
前言:
在編程時,什么時候用實例化對象,什么時候用靜態(tài)類對象,這個值得我們思考,它們之間所占的內(nèi)存和生命周期又是如何,框架本身的回收機制是什么
1、對比效果
實例化對象不斷調(diào)用多少次,都會重新初始化值調(diào)用,說明實例化對象的生命周期是調(diào)用完成后就結(jié)束
靜態(tài)類對象,靜態(tài)類下的靜態(tài)成員會一直占用在內(nèi)存且只實例化一次,說明靜態(tài)類成員的生命周期是從調(diào)用到程序結(jié)束或機制回收
場景使用:
- 1)靜態(tài)類或成員:數(shù)據(jù)庫連接字符串,可以定義為靜態(tài),調(diào)用和獲取比較頻繁
- 2)實例化:登錄操作,一般登錄操作不會太頻繁
- 重新啟動對應(yīng)的IIS站點
在不停的刷新某一個頁面時,內(nèi)存是按規(guī)律的0.1MB增加 ,刷新到一定次數(shù)后,內(nèi)存沒有明顯的增加,甚至是不變,下圖的.NET Core Host進程有兩個,是指兩個站點,且有被外部或內(nèi)部在調(diào)用,否則是不顯示狀態(tài)
2、實例化代碼
public string init = "實例化:hello"; public bool flag = false; public int num = 0; public void Test(string one) { string test = ""; if (!flag) { flag = true; num += 1; test = "【首次輸出】" + init + one + num; } else { num += 1; test = init + one + num; } LmyLogHelper.Debug(test); }
3、靜態(tài)類代碼
public static string init = "靜態(tài)式:hello"; public static bool flag = false; public static int num = 0; public static void Test(string one) { string test = ""; if (!flag) { flag = true; num += 1; test = "【首次輸出】" + init + one + num; } else { num += 1; test = init + one + num; } LmyLogHelper.Debug(test); }
到此這篇關(guān)于C#實例化和靜態(tài)類對象調(diào)用對比的文章就介紹到這了,更多相關(guān)C#實例化和靜態(tài)類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# winform 請求http的實現(xiàn)(get,post)
本文主要介紹了C# winform 請求http的實現(xiàn)(get,post),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Mongodb在CSharp里實現(xiàn)Aggregate實例
本篇文章主要介紹了Mongodb在CSharp里實現(xiàn)Aggregate實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05