【发布时间】:2020-12-23 19:26:52
【问题描述】:
我想在变量和临时变量中保留一个 BsonDocument。哪个应该使用不同的内存并且其中一个的更改不会影响另一个。我如何做到这一点。当我更改临时变量时,原来的变量也发生了变化。使用 c# dotnet core 3.1
var obj1 = await db.GetBuildingName(); //from db bsondocuments
var obj2 = await db.HierarchyCatalogues();//from db list of bsondocuments
var tempobj = new BsonDocument();
tempobj = obj1;
BsonArray catlist = new BsonArray();
foreach (var term in obj2) { catlist.Add(term); }
tempobj.Add(new BsonElement("metadata", catlist));
当我将元数据添加到 tempobject 中时,它也反映在 obj1 中
【问题讨论】:
-
因为
tempobj和obj1指的是BsonDocument的同一个实例。tempobj.Add()更新tempobj和obj1引用的实例。您需要克隆obj1 -
是的。 obj1 引用来自数据库。所以我不能再打电话了
-
如果您使用的是 MongoDB,请尝试
obj1.Clone()或obj1.DeepClone() -
@phuzi 你是对的。谢谢你的回答