C#之List、Queue、Stack使用EnsureCapacity方法预设数组大小

2022/8/23 14:54:49

本文主要是介绍C#之List、Queue、Stack使用EnsureCapacity方法预设数组大小,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

简介

 List、Queue 和 Stack 集合中的 EnsureCapacity方法预设数组大小。

为什么以及何时使用EnsureCapacity 方法

这里我们将首先了解为什么需要使用这种方法以及何时使用。在 List、Queue 和 Stack内部使用的是数组来表示集合。每次我们向这些集合添加更多项时,我们都需要增加这个内部数组的大小。因此,会发生调整大小的操作。由于数组大小进行了调整,因此这是一个性能损失。在我们知道此数组的最大大小或假设我们知道将存储在我们的 List、Queue 或 Stack 集合中的最大元素数量的情况下,我们可以使用EnsureCapacity 方法预设大小。这将确保最初设置此大小,并且不会调整内部数组的大小,因此我们获得了性能提升。让我们在测试应用程序中实现它,

创建一个控制台应用程序来测试EnsureCapacity 方法

我们将首先在 Visual Studio 2022 社区版中创建一个 C# 控制台应用程序,如下所示,

在 Cshaarp 列表、队列和堆栈中使用确保容量方法

在 Cshaarp 列表、队列和堆栈中使用确保容量方法

在 Cshaarp 列表、队列和堆栈中使用确保容量方法

在 Cshaarp 列表、队列和堆栈中使用确保容量方法

在 Cshaarp 列表、队列和堆栈中使用确保容量方法

用下面的代码替换 Program.cs 文件,

var list=new List<int>();
list.EnsureCapacity(5);
for(vari=0;i<5;i++){
    list.Add(i);
    Console.WriteLine(list[i]);
}
thisList.Add(5);
Console.WriteLine(list[5]);

当我们运行此代码时,我们会看到以下输出。

在 Cshaarp 列表、队列和堆栈中使用确保容量方法

因此,我们看到即使超出了 EnsureCapacity 方法中定义的容量,我们仍然可以继续向列表中添加元素。然而,此时,内部数组又重新调整大小,我们失去了性能增益。这表明我们在设置EnsureCapacity 值时必须非常小心。

总结

基本上相当于之前的
var list=new List<int>(5);
或者
var list=new List<int>();
if (list.Capacity < 5) list.Capacity = 5;

 

鸣谢:

https://www.cnblogs.com/yilezhu/p/15182566.html



这篇关于C#之List、Queue、Stack使用EnsureCapacity方法预设数组大小的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程