从其他列表新建列表



所以,问题是当我通过循环创建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);
}
}
}
}
}

在 C# 中,所有对象都是通过引用发送的。当你这样做时

List<int> tempVarlist = lineVarList;

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

最新更新