gpt4 book ai didi

c# - TakeLast 在 .net core 3.1 中没有按预期工作

转载 作者:行者123 更新时间:2023-12-05 07:03:54 24 4
gpt4 key购买 nike

我在 .net core 3.1 控制台应用程序中编写了以下代码。它没有按预期工作。

var arr = new List<int>(Enumerable.Range(1, 10));
var last5 = arr.TakeLast(5);
foreach (var i in last5)
Console.WriteLine(i); //writing 6 7 8 9 10
arr.AddRange(new[] { 11, 12, 13, 14, 15 });
foreach (var i in last5)
Console.WriteLine(i); //writing 6 7 8 9 10 11

它按预期工作 (6 7 8 9 10 11 12 13 14 15) 如果我将项目定位到 .net core 2.2。

我暂时使用了for循环来解决这个问题。

为什么它在 .net core 2.2 和 3.1 中给出不同的值?

最佳答案

这里有几点观察:

  1. 在初始调用 TakeLast(5) 后调用 ToList() 可解决此问题。
  2. arr.AddRange 之后调用 arr.TakeLast(5) 也可以解决此问题。

我假设这是一个与 TakeLast. 返回的迭代器相关的错误。

在一种情况下(版本 2.2),迭代器位置在调用 AddRange 方法后没有重置。在另一个(3.1)中,它正在重置数组开始。

非常奇怪的行为,xD。

关于c# - TakeLast 在 .net core 3.1 中没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63084058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com