如何将元素存储在.Net中的容器中? 例如,C ++向量按顺序存储,而List则不按顺序存储 它们是如何为.Net容器(Array,ArrayList,...)实现的? 感谢。
答案 0 :(得分:1)
因容器而异。由于实现是专有的,因此没有公共规范要求必须的基础数据结构。
如果您有兴趣抽出时间,我之前使用过以下工具来了解MS如何实现这个类或那个:
答案 1 :(得分:1)
这取决于元素。但是C ++ Vector
相当于C#List
,而C ++ List<T>
相当于C#LinkedList
C#ArrayList
几乎就是C#List<object>
维基百科列出many data structures,我建议您查看一下,了解不同的实现方式。
所以:
C++ C# How
Vector ArrayList / List Array (sequential)
List LinkedList Linked List (non-sequential, i.e. linked)
答案 2 :(得分:1)
在.net中,容器(甚至数组)处理对它们的所有访问。你不使用指针来处理它们(除非极少数情况下你可能不会进入),所以它们存储信息的方式通常无关紧要。在许多情况下,它甚至没有指明幕后的工作方式,因此可以将实现更改为“更好”的东西,而不会因某些愚蠢的原因而破坏依赖于这些细节的东西。
最后我听说,数组按顺序存储它们的条目 - 对于引用类型对象(不是结构的所有东西)的警告,“条目”是引用而不是对象本身。数据可以在内存中的任何位置。可以把它想象成一个引用数组而不是一个对象数组。
基于数组的ArrayLists应该以相同的方式存储它们的东西。