如果我在网上搜索“c ++ list”,我会很好地总结c ++中的列表如何工作,以及它的好处/缺点等。但是我找不到相同的C#。据我所知,名单没有说明它是如何实现的,它可以在列表实际上是一种语言中变化很大。
我需要将大量数据加载到最好的一个数组中,以便快速随机访问所有数据。然而,它太多的数据和c#无法找到足够大的连续内存块。所以我打算创建一个抽象,它占用了很多数组,并且可以作为一个数组。它将有一个索引器属性,可以看到访问正确的数组。
然而我想,这不是一个列表在c#中实际起作用的方式吗?我所知道的关于c#中的列表,或者至少认为,它们不像链接列表那样工作,因为它无法访问随机元素,而是来自前一个元素,或者可能来自之后的元素。
我能否详细了解这件事?
答案 0 :(得分:4)
要回答您的初始查询,'列表'由c#中的数组支持
来自MSDN:
http://msdn.microsoft.com/en-us/library/ms379570(v=vs.80).aspx#datastructures20_1_topic5
列表是“同构,自我红色数组”
文章非常好,也许你正在寻找。
Imp: c#中的List由数组支持,因此理论上的大小限制将是支持它的数组的限制。此外,当使用列表时,如果您确定要将其增长到一定的大小,那么将初始容量设置得足够大以优化性能将是一个好主意。
但我有一种感觉'列表'不是你在这里寻找的解决方案。
建议:也许如果您对文件大小有限制,您可以使用将文件键入其内容的词典,并使用规范文件路径作为内容存储在列表中的键。这可能对你有用。
答案 1 :(得分:1)
我认为这是一个非常好的定义,简单来自C#5.0
在内部,List和ArrayList通过维护内部工作 对象数组,在达到容量时用更大的数组替换。 附加元素是有效的(因为通常有一个空闲插槽 结束),但插入元素可能很慢(因为所有元素之后 必须移动插入点以形成空闲插槽。和。一样 数组,如果在a上使用BinarySearch方法,搜索是有效的 已排序的列表,但由于每个列表都是低效的 必须单独检查项目。