对于保证使用阵列的每种情况......都有一个很棒的收藏品。在.NET中是否有任何针对数组的特定用例?
答案 0 :(得分:34)
想到发送/接收具有特定长度的数据,即。串口,Web请求,FTP请求。基本上是在系统中较低级别工作的东西。此外,大多数集合都使用数组进行存储(可注意的例外:LinkedList<T>
)。集合只是另一个抽象层。
答案 1 :(得分:6)
数组很有用,因为它们在内存中始终是线性的,并且可以快速使用。例如,我可以直接将byte[]
和marshal编组到一个结构中而没有任何问题,但据我所知,首先必须将List<T>
转换为数组。
答案 2 :(得分:5)
是的,当然还有数组的用途。有些方法仍然需要数组。
例如:
string[] items = "a,b;c:d".Split(new char[]{',',';',':'});
这仍然是保留大量项目的最简单方法,也是最需要的选择,直到您需要某些特定功能,例如动态增长。
答案 3 :(得分:5)
不,他们仍然有自己的用途,应该一直考虑。
记住数组是固定长度的非常基本的表示,因此它们非常快,并且大多数语言根据数组中使用的类型理解它们。
您需要在创建数组时定义数组大小,以后不能更改其大小。列表和其他内容可以根据需要增长,这会增加内存分配的开销。
列表和其他类型很有用,因为它们可以做很多事情,但有时你不需要额外的所有开销,所以你只需要一个数组。
这就像驾驶一辆4x4因为你认为有一天你可能需要去越野,即使有99.9%的机会你会在正常的道路上行驶。阵列将是基本的汽车,例如列表将是4x4 ......它可以做汽车可以做的其他事情(引擎盖可能会使用大部分相同的部件)但是以牺牲汽油,成本,可能不会适合某些停车位等...
阵列=性能和兼容性
列表(或其他表示)=以易于使用的性能和兼容性
答案 4 :(得分:4)
阵列丢失(某些)意义吗?
是。对于需要“表格”项目的许多任务,现在有更灵活和有用的解决方案,如List<>
和IEnumerable<>
。
阵列是否失去了重要性?
没有。它们是最快的存储形式,它们在大多数集合类中使用“引擎盖”,System.String等。
因此,数组变得更低级,应用程序员将更少地直接使用 。
答案 5 :(得分:3)
除了其他所有内容之外,您引用的许多优秀集合类都是使用数组实现的。您可能没有明确地使用它们,但是您正在使用它们,并且您的程序更适合它。这意味着数组 必须 使用该语言(或者使用大量本机代码直接实现集合,这将更加轻松)。
答案 6 :(得分:2)
是?每当我有一个内部维护固定大小的项集合的类型时,我使用一个数组,因为它是最快的迭代并且需要最少的内存。如果您不需要这些功能,使用List<T>
,Queue<T>
等无意义。
答案 7 :(得分:2)
我每天使用数组工作的两种情况:
答案 8 :(得分:1)
这是一个公平的问题,但答案肯定是它们仍然有用。速度是一个原因,固定尺寸的简单性是另一个原因。但我认为最重要的是灵活性。如果您需要它,它为您提供了一个很好的基础来设计您自己的集合,并由一个简单的数组支持。
答案 9 :(得分:1)
不,Array不会失去它的重要性。
当您事先知道项目的数量时,您可以选择能够快速访问的数组。
2-在Graph theroy中,当你存储有关顶点之间链接的信息时,你可以使用比LinkList实现更快的数组来实现。
3-像string.split这样的方法返回数组。
你可以在一系列计算机问题中使用这个奇妙的静态占位符
答案 10 :(得分:1)
我使用数组来处理像WriteableBitmap类中的图像。
答案 11 :(得分:1)
我必须告诉你一件事Arrays是任何编程语言的构建块。如果要声明具有多个元素的存储,则数组是您的基本选项。
比如说一个List。
如果您看到List的定义,它实际上是
T []项目
只需使用Reflector并找到List的定义,您会惊讶地发现List实际上是一个Array。在.NET中,除LinkedList之外的大多数集合基本上都是一个Array实现。他们使用Array因为它的快速存储和检索。
我同意Array有更新或删除的限制,如果你的主要重点是存储而不是速度,你可能会去链接列表。
答案 12 :(得分:1)
您认为许多精美系列背后的支持领域是什么?