c Lazy懶載入詳細解讀及其例子

2021-10-01 06:06:06 字數 1835 閱讀 4637

近期接到個需求要求不准使用分頁控制項使用滾動條的方式載入出來幾十萬條資料,還不能影響效能。

固把lazy再次看了一遍

static

void

main

(string

args)

]");

//使用延遲載入例子

//stopwatch win10stopwatch = stopwatch.startnew();

//windows10 windows10 = new windows10(1);

"win10是否初始化");

//listsoftwares = windows10.softwares.value;//此時使用的時候才會真正的去跑下面那個迴圈

"win10是否初始化");

//思考懶載入加分頁混合使用

//不使用延遲載入例子加模擬分頁

stopwatch win7stopwatch = stopwatch.

startnew()

; win7stopwatch.

start()

;windows7 win7 =

newwindows7(1

);win7stopwatch.

stop()

; console.

writeline

($"win7時間]");

//使用延遲載入例子加模擬分頁

stopwatch win10stopwatch = stopwatch.

startnew()

; win10stopwatch.

start()

;windows10 windows10 =

newwindows10(1

);list softwares = windows10.softwares.value;

//此時使用的時候才會真正的去跑下面那個迴圈

win10stopwatch.

stop()

; console.

writeline

($"win10是否初始化");

console.

writeline);

console.

read()

;}///

/// win7電腦開機很慢

///

public

class

windows7

//不使用延遲載入,解除上面注釋切換使用延遲載入

public list softwares

public

windows7

(int id)

}///

/// win10電腦開機很快

///

public

class

windows10

//使用延遲載入

public lazy

> softwares

public

windows10

(int id)

}public

class

software

public

string title

}public

class

softwarerepository);

}return softwares;

}public

static list

getsoftwaresbyid

(int page));

}return softwares;

}

單例模式懶載入併發

單例雖然沒有快取寫的那麼平凡,如果在getinstance方法上加sychonize會大大影響效能,單例的寫只有在第一使用時才會寫。使用讀寫鎖操作,基本上都上的讀鎖,對其他執行緒訪問沒有影響public class singleton public static singleton getinsta...

ts單例模式 預載入和懶載入

單例模式是針對類的一種設計,讓類只能有乙個例項物件,對於一些沒必要產生第二個例項的類來說建議設計成單例類。單例類的例項化過程是由自身實現的,減少了其他人使用該類時的心智負擔。缺點是單例類由於靜態屬性,無法擴充套件。由於單例類的例項化過程是由自身實現的,所以設計的時候在new這裡就會產生兩種方法。1....

設計模式 單例模式 懶載入

這篇文章總結幾種比較常用的設計模式,不懂得設計模式。怎麼敢稱熟悉oop思想。單例模式的核心結構中只包含乙個被稱為單例類的特殊類,通過單例模式可以保證系統中乙個類只有乙個例項 由於快載入單例模式是執行緒安全的,所以本文只討論懶載入單例模式的執行緒安全問題 版本一 使用懶載入 快載入 程式呼叫時再分配記...