我的代码中有一些通用列表,它们有几十个或几百个元素.

推荐答案

调用Clear()方法和创建"new list()"哪个更快?

这是不可能回答的.这真的取决于很多因素,包括Collection 存在的时间.

这里最好的 Select 是:

  1. 分析应用程序,看看这是否真的很重要.它很可能不会产生任何明显的区别,在这种情况下,我会使用最有意义的方法来看待这个物体.

  2. 如果有关系,编写两组代码,并测量速度差异(如果有).

从实用的Angular 来看,调用Clear()实际上不会减少内存(List<T>本身使用),因为它不会缩小列表的容量,只会消除其中包含的值.创建一个新的List<T>将导致分配一个新的列表,这将反过来导致更多的分配与增长.

然而,这并不意味着它会更慢——在许多情况下,重新分配将是faster,因为您不太可能将大型数组升级为更高的垃圾收集代,这反过来又可以让GC进程更快.

如果不知道您的确切场景和探查器中的measuring,就无法知道在您的场景中哪个更好.

.net相关问答推荐

如何使用 awslocal 通过 localstack 中的 cloudwatch events/eventbridge 触发 lambda

为什么 .NET 中的 System.Version 定义为 Major.Minor.Build.Revision?

在 C# 中生成随机小数

从 switch 块中跳出 foreach 循环

SqlDateTime.MinValue != DateTime.MinValue,为什么?

如何在 C# 4.0 中使任务进入睡眠状态(或延迟)?

.Net 中的 Decimal.One、Decimal.Zero、Decimal.MinusOne 的用途是什么

如何通过 LINQ 比较没有时间的 DateTime?

我应该在 LINQ 查询中使用两个where子句还是&&?

为什么使用 ImmutableList 而不是 ReadOnlyCollection?

我可以在没有两个查询的情况下通过布尔标准将 IEnumerable 一分为二吗?

何时何地使用 GetType() 或 typeof()?

让 String.Replace 只打整个单词的方法

DLL 中有什么以及它是如何工作的?

.NET 委托类型的正确命名约定?

C# 应用程序中的全局键盘捕获

.NET 中的 java.lang.IllegalStateException?

为 webClient.DownloadFile() 设置超时

检测到包降级警告(dotnet core,vs 2017)

连接字符串而不是使用一堆 TextBlocks