2018年7月19日 星期四

C# 建立物件的淺層複製(Shallow Clone/Copy)及深層複製(Deep Clone/Copy)

這幾天在使用 Memory Cache 時,意外發現外部的修改會影響到 Memory Cache 原本的值,進而延伸出其它神奇的問題,追根究柢,主要是因為在存取 Memory Cache 值時,都是使用同一份參考(reference),造成程式上某個地方改動該 Cache 值時,其它地方都會受到影響,所以我的解決方式就是深層複製出一份 Cache 的值供外部使用,防止外部操作去更動到原始 Cache 值 類似的問題其實以前就遇過了,但當時因為手上太多案子所以就只在網路上找ㄧ些快速解法複製貼上而不了了之(菸~~~),這次趁休假空擋整理出ㄧ些覺得還不錯的實作方式及順便比較一下優缺點。

訪客統計