C# C语言中避免深度复制的解决方案
我有一个变量var1,它是一个自定义类,包含一个字符串列表。我有另一个变量var2,它是一个类似var1的类列表 我的目标是,我需要逐个类迭代var2,并实例化AddRange,以将var1s的字符串列表与var2的第I个类自己的字符串列表结合起来。这是独立完成的,这意味着var1的字符串列表在每次迭代中保持不变。只有在每次迭代中,它的字符串列表才会与var2的字符串列表合并,但是在这个迭代之后,它必须恢复到原始的字符串列表。问题是我不能让它工作。每次我添加一个字符串时,它都不会恢复 我试着制作一个深度副本,并在每次迭代结束时将中间克隆类设置为null。有什么想法吗 下面是一个粗略的佩多科德C# C语言中避免深度复制的解决方案,c#,C#,我有一个变量var1,它是一个自定义类,包含一个字符串列表。我有另一个变量var2,它是一个类似var1的类列表 我的目标是,我需要逐个类迭代var2,并实例化AddRange,以将var1s的字符串列表与var2的第I个类自己的字符串列表结合起来。这是独立完成的,这意味着var1的字符串列表在每次迭代中保持不变。只有在每次迭代中,它的字符串列表才会与var2的字符串列表合并,但是在这个迭代之后,它必须恢复到原始的字符串列表。问题是我不能让它工作。每次我添加一个字符串时,它都不会恢复 我试着制作
public void combineString(CustomClass var1)
{
// var2 is a class variable that contains a list of CustomClass
List<CustomClass> finalized = new List<CustomClass>();
for (int i = 0; i < var2.Count; i++)
{
CustomClass tmpVar = (CustomClass)var1.Clone();
tmpVar.addString(var2[i].StringSet); //each Custom class has a stringSet which is a list of strings
// .....Do some analysis of the strings of tmpVar
// if it passes the analysis add tmpVar in to finalize list
// none of the other components should change
if (pass analysis)
{
finalized.Add(tmpVar);
}
tmpVar = null;
}
// When the loop is done, the 'finalized' variable is a list of
// CustomClass but then each element inside finalized contains the same string set.
Console.WriteLine("Done");
}
因此,var1必须保持不变。将字符串合并到另一个var1中,或者如果必须保持原样,则一起使用新列表。我认为没有必要为克隆而烦恼。因此,基本上,您必须在一个字符串中连接两个字符串列表,而不必接触字符串本身 像这样的东西对你有用吗 串接=var1.Concatvar2[i].StringSet.Aggregateitem1,item2=>item1+item2
聚合对IEnumerable进行迭代,并返回其所有项的串联。是的,我正在处理它!很抱歉听起来你可以用函数式编程来实现这一点。哈哈,是的,我来自函数式编程语言,但是它太慢了,所以在Cvar1中编写它本身就是一个类,我需要它的组件在整个过程中保持完整。