其他列表中的新列表

时间:2018-09-04 18:56:50

标签: c# list

所以,问题出在我遍历创建tempNumberList的循环中,然后进入if(true)语句后,它向tempNumberList添加了变量,但是当我添加它时,lineVarList也以相同的方式向其自身添加了变量

我什至不知道要搜索什么。我不认为这很困难,但我不知道发生了什么。

if (checkedNumbersResult)
{
     finalResult.MaximumNumber = pyramidNumbers.First().First();
     finalResult.NumbersInLine.Add(pyramidNumbers.First());
     AssignmentResult notBranchingResults = new AssignmentResult
     {
         MaximumNumber = pyramidNumbers.First().First(),
         NumbersInLine = new List<List<int>>()
     };
     foreach (var pyramidNumberList in pyramidNumbers.Skip(1))
     {
         List<List<int>> tempNumberList = new List<List<int>>();
         foreach (var lineVarList in finalResult.NumbersInLine)
         {
             List<int> tempVarlist = lineVarList;
             for (int varListItem = 0; varListItem < lineVarList.Count(); varListItem++)
             {
                 if (true)
                 {
                     tempVarlist.Add(pyramidNumberList.Skip(varListItem).First());
                     tempNumberList.Add(tempVarlist);
                 }
             }
         }
     }
 }

1 个答案:

答案 0 :(得分:2)

在C#中,所有对象都是通过引用发送的。

List<int> tempVarlist = lineVarList;

您实际上发送了对tempVarlist的引用,这意味着您没有创建新对象。您将lineVarList的地址传递给tempVarlist,以便他们两个都指向相同的地址。结果将是您刚刚观察到的结果。实际上,您使用相同的对象,但是具有两个不同的名称。这就是您的操作会影响两个列表的原因。

相关问题