【问题标题】:Why RemoveAll don't remove specific elements from list? [duplicate]为什么 RemoveAll 不从列表中删除特定元素? [复制]
【发布时间】:2022-01-25 17:11:01
【问题描述】:

当我尝试删除所有元素时,RemoveAll 方法不起作用。删除后,我尝试使用 foreach 循环 Console.WriteLine() 从 mainArray 中的所有元素。为什么这种从列表中删除特定元素的方法不起作用,也许还有更好的方法?

        var mainArray = new int[] { 1, 2, 1 , 2, 3  };

        mainArray.ToList().RemoveAll(n => n == 1);

【问题讨论】:

  • 提示,看ToList()的返回类型。注意它不是void
  • 阅读您的代码。您从mainArray 开始,然后通过调用ToList 将其复制到一个新列表中。然后您调用RemoveAll 并删除该列表中编号为1 的元素,清空列表。您不会将该部分清空的列表分配给任何变量。在该语句的末尾,您有一个即将超出范围的缩减列表和未触及的原始数组

标签: c# arrays .net list removeall


【解决方案1】:

为什么 RemoveAll 不从列表中删除特定元素?

简短的回答:确实如此。

长答案: 你从一个数组开始。如果您将鼠标悬停在.ToList() 方法上,您可以看到返回类型。毫不奇怪,它是List<Int32>。不同的对象,在你记忆中的不同位置。您正在从列表中删除元素,而不是从数组中。

var mainArray = new Int32[] { 1, 2, 1, 2, 3 };
var list = mainArray.ToList();
list.RemoveAll(n => n == 1);
mainArray = list.ToArray();

【讨论】:

    猜你喜欢
    • 2019-10-30
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多