我在哪里可以了解各类.NET名单? [英] Where can I learn about the various types of .NET lists?

查看:167
本文介绍了我在哪里可以了解各类.NET名单?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有谁知道一个很好的资源,以简明地解释了在C#中,当他们的使用是否合适?

Does anyone know a good resource to concisely explain the different types of lists available in C# and when their usage is appropriate?

例如,列表,哈希表,字典等。

For example, List, Hashtable, Dictionaries etc.

我从来没有十分肯定的时候,我应该使用什么。

I'm never quite sure when I should be using what.

推荐答案

这些是不是所有的名单,但他们都集合。这里有一个简单的总结。

These aren't all lists, although they're all collections. Here's a quick summary.

非泛型集合(API是在对象的方面。值类型的装​​箱。

Non-generic collections (API is in terms of object. Values types are boxed.

这些大多是在<一个href="http://msdn.microsoft.com/en-us/library/system.collections.generic.aspx">System.Collections命名空间:

These are mostly in the System.Collections namespace:

  • 的ArrayList :项目列表,由数组支持。快速的随机读/写访问。快速添加到尾部,如果的缓冲并不需要调整。
  • 哈希表:在地图的关键价值。键是唯一的,值不必须如此。用来实现近澳GetHash code方法(1)读/写访问(除了讨厌的情况下,所有项目都使用相同的散列,或后备存储需要重建)。遍历键/值对给出了一个未predictable订单。 (好吧,有效地取消predictable。)
  • 排序列表:就像一个Hashtable,但条目总是返回排序逐键顺序。存储为键/值对的列表。
  • 堆栈:后进先出的集合
  • 队列:先入先出集合
  • 阵列:固定大小的O(1)随机访问;非通用的,但强类型的形式,以及
  • ArrayList: A list of items, backed by an array. Fast random read/write access. Fast add to the tail end, if the buffer doesn't need resizing.
  • Hashtable: Map from key to value. Keys are unique, values don't have to be. Uses the GetHashCode method to achieve near O(1) read/write access (aside from nasty cases where all items have the same hash, or the backing store needs rebuilding). Iterating over the key/value pairs gives an unpredictable order. (Well, effectively unpredictable.)
  • SortedList: Like a Hashtable, but the entries are always returned in sorted-by-key order. Stored as a list of key/value pairs.
  • Stack: Last-in-first-out collection
  • Queue: First-in-first-out collection
  • Array: Fixed-size O(1) random-access; non-generic, but has strongly typed forms as well

泛型集合。 (强类型的API,不会框的值类型(假设适合T)。

这些大多是在<一个href="http://msdn.microsoft.com/en-us/library/system.collections.generic.aspx">System.Collections.Generic命名空间:

  • List<T>: Like ArrayList
  • Dictionary<TKey, TValue>: like Hashtable
  • SortedList<TKey, TValue>: like SortedList
  • SortedDictionary<TKey, TValue>: like SortedList, but stored as a tree of key/value pairs which gives better performance in many situations. See docs for more detail.
  • LinkedList<T>: Doubly linked list (fast access to head and tail)
  • Stack<T>: Like Stack
  • Queue<T>: Like Queue
  • ReadOnlyCollection<T>: Like List<T> but giving a read-only view

可能是最重要的收藏的接口的是的IEnumerable (和的IEnumerable&LT; T> )。这种再presents项很像一个流重新$ P $序列psents字节序列。没有随机存取,只向前读。 LINQ到对象是在此基础上,和pretty的多所有的集合类型实现了。

Possibly the most important collection interface is IEnumerable (and IEnumerable<T>). This represents a sequence of items much like a Stream represents a sequence of bytes. There is no random access, just forward-reading. LINQ to Objects is based on this, and pretty much all collection types implement it.

这篇关于我在哪里可以了解各类.NET名单?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆