簡體   English   中英

將字典的值深度復制到變量 c#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM