[英]Deep copy value of dictionary to a variable c#
我有一本字典
employeeDict = new Dict<int, Employee>();
如果我做
var employee = dict[1];
接着
employee.Name = "Changed"
它在原始字典中也受到影響。 如果我不希望這種情況發生怎么辦?
沒有內置方法可以提供任意對象的深層副本。 您需要自己提供。
我的建議是避免克隆,而是采用不可變類型。 即,將 class 的所有字段和屬性設為只讀。 您將被迫創建一個新的 object,而不是更改屬性。 有關immutability 的好處的更多詳細信息,請參閱此答案。
c# 9 中的記錄類型使這相當容易,允許您編寫:
var employeeWithChangedName = employee with { Name = "Changed"};
c# 10 允許將相同的語法用於結構和匿名類型。
我用過這樣的東西
Employee e = new Employee();
e.Id = employeeDict[1].Id;
e.Name = "Changed";
e.Address = employeeDict[1].Address;
這也有效。 謝謝其他人的回復。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.