PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_Sharp
[問題] 陣列複製問題List<class>
作者:
WayneHong
(韋恩咖啡)
2020-11-12 17:03:01
後來去NuGet上面找還真有
順便跟大家分享一下
GitHub網址:https://github.com/ReubenBond/DeepCopy
一行 DeepCopier.Copy() 就完成了
而且授權是MIT,商用也可以喔~
/********************************/
大家好,小弟遇如標題的問題
就是如何更有效的複製陣列
假如情況如下:
class Student
{
public int ID = 0;
public string Name = "";
}
List<Student> List_1 = new List<Student>();
然後List_1裡面裝了若干個Student
我要把 List_1 完整複製出來
且複製出來的陣列內容物不要用到相同記憶體位址
目前作法是這樣:
List<Student> List_2 = new List<Student>();
foreach(Student OldStudent in List_1)
{
Student NewStudent = new Student();
NewStudent.ID = OldStudent;
NewStudent.Name = OldStudent;
List_2.Add(NewStudent);
}
總之就是new一個新的Student物件
重新賦值給它再加入新的陣列
這個方法實測有用
但問題來了
如果Student裡面又有別的List裝其他物件
然後那個List裡面的物件又有List裝其他物件....
以此類推,就是出現巢狀結構
變成我只要逢List就要開新的迴圈重新new物件賦值
這樣感覺工程太浩大了
所以想問看看有沒有更快的方法?
.網路上查到
List_1.ForEach(i =>List_2.Add(i)) 或
List<Student>List_2 = new List<Student>(List_1);
試過沒有用,記憶體位置照樣是共用的
.目前的狀況不能使用Struct
謝謝各位
作者:
kobe8112
(小B)
2020-11-12 17:43:00
https://stackoverflow.com/questions/222598
作者:
Nilife
(Al-Qaeda)
2020-11-12 18:32:00
寫遞迴?
作者: t64141 (榕樹)
2020-11-13 01:33:00
deep clone
作者:
mark0708
(sheep)
2020-11-15 19:08:00
針對class寫一個deep copy ...
作者:
noworneverev
(小朋友)
2020-11-20 17:12:00
NuGet找一下應該有現成的可以用
作者:
eeccoo
2020-12-09 16:30:00
提供您另一個做法
http://t.ly/Rz6g
利用序列化方式加上擴充方法,可以簡單用連接中做法完成
繼續閱讀
[問題] bitmap 繪圖特殊符號
a2975313
[心得] System.Text.Json轉換評估
erspicu
[心得] System.Text.Json與Json.NET比較
erspicu
[情報] .NET FRAMEWORK快進入歷史了
erspicu
[問題] 載入InitComponent後執行MessageBox.show
ctr1
[問題] 呼叫第三方dll變得很慢
eye5002003
[問題] 獨體模式中的connection
wind681201
[問題] chart 畫圖
susumiya
[問題] ashx如何叫用不同ashx檔案的函式
Davy41
[問題]WinFormFlowLayoutPanel可Resize內容物件
bantime
Links
booklink
Contact Us: admin [ a t ] ucptt.com