close

今天在專案(C#)中發現一個問題,問題說明如下:

當專案的Model需要進行複製且針對該複製出來的東西,我們需要做一些計算,再丟給其他Method運算的時候,

常常會使用這樣的語法

T ModelA = new T();

ModelA=org_Model;

此動作會將原先Model中的所有資烙,丟給ModelA 做為參考,對於使用Linq進行篩選時,是相當好用的

但是如果我們今天要做一些運算,將某些值改掉,例如

ModelA.Name="Light";

則會造成refernece 的 org_Model中的Name也會一併被改成Light (原先可能是其他的值,如:Tommy之類的)

針對這樣的情況,有以下幾種方式可以解(可能還有更多方式,只是筆者功力尚淺,請不吝請教 謝謝)

1.完整將org_Model的值搬運到ModelA中

 但是此方法太累,當今天Model的值越多,每複製一次就要重做一次,是相當浪費時間的

2.採用Deep Clone(深層複製)的方式

此方式只需要將Model丟入即可,幾行程式即可結束

對於複製一整包大Model,特別是大Model中還有很多小Model的情況 此方式是最佳解法

筆者參考了 CHRIS CHEN 大大的網誌

相關網址如下:https://dotblogs.com.tw/wasichris/2015/12/03/152540

有興趣的可以參考 CHRIS CHEN 大大的資訊

 

arrow
arrow

    ChiaMing Liu 發表在 痞客邦 留言(0) 人氣()