C#實(shí)例化和靜態(tài)類對象調(diào)用對比
前言:
在編程時,什么時候用實(shí)例化對象,什么時候用靜態(tài)類對象,這個值得我們思考,它們之間所占的內(nèi)存和生命周期又是如何,框架本身的回收機(jī)制是什么
1、對比效果
實(shí)例化對象不斷調(diào)用多少次,都會重新初始化值調(diào)用,說明實(shí)例化對象的生命周期是調(diào)用完成后就結(jié)束
靜態(tài)類對象,靜態(tài)類下的靜態(tài)成員會一直占用在內(nèi)存且只實(shí)例化一次,說明靜態(tài)類成員的生命周期是從調(diào)用到程序結(jié)束或機(jī)制回收
場景使用:
- 1)靜態(tài)類或成員:數(shù)據(jù)庫連接字符串,可以定義為靜態(tài),調(diào)用和獲取比較頻繁
- 2)實(shí)例化:登錄操作,一般登錄操作不會太頻繁
- 重新啟動對應(yīng)的IIS站點(diǎn)
在不停的刷新某一個頁面時,內(nèi)存是按規(guī)律的0.1MB增加 ,刷新到一定次數(shù)后,內(nèi)存沒有明顯的增加,甚至是不變,下圖的.NET Core Host進(jìn)程有兩個,是指兩個站點(diǎn),且有被外部或內(nèi)部在調(diào)用,否則是不顯示狀態(tài)
2、實(shí)例化代碼
public string init = "實(shí)例化: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#實(shí)例化和靜態(tài)類對象調(diào)用對比的文章就介紹到這了,更多相關(guān)C#實(shí)例化和靜態(tài)類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#利用WebClient實(shí)現(xiàn)兩種方式下載文件
本篇文章主要介紹了C#利用WebClient 兩種方式下載文件,詳細(xì)的介紹了兩種方式,非常具有實(shí)用價值,需要的朋友可以參考下。2017-02-02使用C#給PDF文檔添加注釋的實(shí)現(xiàn)代碼
本文將實(shí)例講述C#中如何使用免費(fèi)組件給PDF文檔添加文本注釋,包括自由文本注釋。自由文本注釋能允許我們自定義它的風(fēng)格和外觀,非常具有實(shí)用價值2017-01-01C# winform 請求http的實(shí)現(xiàn)(get,post)
本文主要介紹了C# winform 請求http的實(shí)現(xiàn)(get,post),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Mongodb在CSharp里實(shí)現(xiàn)Aggregate實(shí)例
本篇文章主要介紹了Mongodb在CSharp里實(shí)現(xiàn)Aggregate實(shí)例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05