解决方案避免在C#中进行深度复制

时间:2015-04-04 15:50:45

标签: c#

我有一个变量var1,它是一个包含单个字符串列表的自定义类。我有另一个变量var2,它是var1等类的列表。

我的目标是我需要逐个var2迭代并实例化AddRange以将var1s字符串列表与var2'{{{ {1}}类自己的字符串列表。这是独立完成的,这意味着i的字符串列表在每次迭代时保持不变。只有在每次迭代时,它的字符串列表才会与var1的字符串列表相结合,但在此迭代之后,它必须恢复为原始字符串。问题是我不能让这个工作。每次我添加一个字符串,它都不会还原。

我尝试过制作深层副本,并在每次迭代结束时将中间克隆类设置为null。有什么想法吗?

下面是粗略的“PeudoCode”

var2

2 个答案:

答案 0 :(得分:0)

因此,var1必须保持不变。要么将字符串组合到另一个var1中,要么将其保留原样,请同时使用新列表。我认为没有必要打扰克隆。

答案 1 :(得分:0)

因此,您基本上必须在单个字符串中连接两个字符串列表而不触及字符串本身。

这样的事情会对你有用吗?

string concatenated = var1.Concat(var2[i].StringSet).Aggregate((item1, item2) => item1 + item2);

Aggregate遍历IEnumerable并返回其所有项的串联。