当前位置:  开发笔记 > 编程语言 > 正文

C#中的动态数组

如何解决《C#中的动态数组》经验,为你挑选了4个好方法。

有没有在C#中创建动态数组的方法?



1> Chris Van Op..:

看看通用列表.


问题(虽然简短且不具说明性)并不是在询问一个通用列表 - 问题可能在于询问`dynamic []`https://msdn.microsoft.com/en-GB/library/dd264736.aspx(动态数组)类型)或`ExpandoObject`https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v=vs.110).aspx我可以-1回答不提这些
只包含文章链接的答案是无益的.无法保证链接保持活动状态.
@ LukeTO'Brien,动态是在C#4.0中引入的,这个问题在最初被问到这个问题后整整一年发布.OP可能会询问可调整大小的数据结构,如https://en.wikipedia.org/wiki/Dynamic_array

2> JaredPar..:

使用代码示例扩展Chris和Migol的答案.

使用数组

Student[] array = new Student[2];
array[0] = new Student("bob");
array[1] = new Student("joe");

使用通用列表.在引擎盖下,List 类使用数组进行存储,但这种方式允许它有效地增长.

List list = new List();
list.Add(new Student("bob"));
list.Add(new Student("joe"));
Student joe = list[1];


这个答案比你的@Migol更好,因为这显示了如何实际使用List <>而不是仅仅将其作为关键字提及."半坏" - >"半好" - >好
这个例子是半坏的,因为我们都谈到了ArrayList

3> Mehdi LAMRAN..:

有时,普通数组比通用列表更受欢迎,因为它们更方便(例如,对于昂贵的计算 - 数值代数应用程序更好的性能,或者用于与R或Matlab等统计软件交换数据)

在这种情况下,您可以在动态启动List后使用ToArray()方法

List list = new List();
list.Add("one");
list.Add("two");
list.Add("three");

string[] array = list.ToArray();

当然,只有当数组的大小从未被知道或事先修复时才有意义.如果您已经知道程序某个点的数组大小,最好将其作为固定长度数组启动.(例如,如果从ResultSet检索数据,则可以计算其大小并动态启动该大小的数组)


如果你*要*将一个数组传递给一个接口,那么它*必须是一个数组.构建一个列表然后在传递它之前将它变成一个数组要容易得多.我比其他人更喜欢这个答案,因为它解决了这个问题!
Ararys不是更方便(它们提供List 接口的子集)并提供几乎相同的性能,因为List 使用下面的常规数组.迭代6000000个元素:列表/用于:1971ms阵列/用于:1864ms(基准来自http://stackoverflow.com/questions/454916/performance-of-arrays-vs-lists)

4> Migol..:

List对于强类型的,或者ArrayList如果你有.NET 1.1或喜欢转换变量.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有