[問題] 陣列複製問題List<class>
後來去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
謝謝各位
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.51.152.16 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1605171783.A.223.html
→
11/12 17:43,
4年前
, 1F
11/12 17:43, 1F
→
11/12 18:32,
4年前
, 2F
11/12 18:32, 2F
→
11/13 01:33,
4年前
, 3F
11/13 01:33, 3F
推
11/15 19:08,
4年前
, 4F
11/15 19:08, 4F
謝謝樓上各位的回答,deep copy正是我需要的
只是我原本以為C#會有現成的function可以呼叫(懶惰
※ 編輯: WayneHong (118.163.80.132 臺灣), 11/17/2020 12:22:10
推
11/20 17:12,
4年前
, 5F
11/20 17:12, 5F
推
12/09 16:30,
4年前
, 6F
12/09 16:30, 6F
→
12/09 16:31,
4年前
, 7F
12/09 16:31, 7F
※ 編輯: WayneHong (118.163.110.206 臺灣), 12/10/2020 18:07:12
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章