我有字典
employeeDict = new Dict<int, Employee>();
如果我做
var employee = dict[1];
進而
employee.Name = "Changed"
它也會在原始字典中受到影響。如果我不想發生這種情況該怎么辦?
uj5u.com熱心網友回復:
沒有內置的方法來提供任意物件的深層副本。你需要自己提供。
我的建議是避免克隆,而是采用不可變型別。即使類的所有欄位和屬性只讀。您將被迫創建一個新物件,而不是更改屬性。有關不變性好處的更多詳細資訊,請參閱此答案。
c# 9 中的記錄型別使這變得相當容易,允許您撰寫:
var employeeWithChangedName = employee with { Name = "Changed"};
c# 10 允許對結構和匿名型別使用相同的語法。
uj5u.com熱心網友回復:
我用過這樣的東西
Employee e = new Employee();
e.Id = employeeDict[1].Id;
e.Name = "Changed";
e.Address = employeeDict[1].Address;
這也有效。謝謝其他人的回復。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/366695.html
上一篇:通過for回圈創建嵌套字典
