Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中避免深度复制的解决方案_C# - Fatal编程技术网

C# C语言中避免深度复制的解决方案

C# C语言中避免深度复制的解决方案,c#,C#,我有一个变量var1,它是一个自定义类,包含一个字符串列表。我有另一个变量var2,它是一个类似var1的类列表 我的目标是,我需要逐个类迭代var2,并实例化AddRange,以将var1s的字符串列表与var2的第I个类自己的字符串列表结合起来。这是独立完成的,这意味着var1的字符串列表在每次迭代中保持不变。只有在每次迭代中,它的字符串列表才会与var2的字符串列表合并,但是在这个迭代之后,它必须恢复到原始的字符串列表。问题是我不能让它工作。每次我添加一个字符串时,它都不会恢复 我试着制作

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

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

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

下面是一个粗略的佩多科德

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中编写它本身就是一个类,我需要它的组件在整个过程中保持完整。