1

我是 C# 新手,已经习惯了 Java 及其数据结构。最近在写C#的时候,试图根据用户的选择来获取结果列表。我在 C# 中使用了 HashTable,但人们说我可以在 List 中调用 where() 方法。

我想知道 where 方法(数组?或其他一些数据结构?)的底层,以便我可以弄清楚 where() 函数和 HashTable 的实际成本。

另外,我知道大多数 HashTable 是基于数组或 BST 创建的,那么 HashTable 在 C# 中是如何工作的呢?

4

1 回答 1

3

一般来说,我不会Hashtable在 C# 中使用,而是使用Dictionary<TKey, TValue>,因为这提供了类型安全。

这两个类都具有接近 O(1) 的访问权限来访问集合中的项目。文档中提到了这一点:

获取或设置此属性的值接近 O(1) 操作。

请注意,使用 aList<T>将在内部有效地使用数组,这意味着.Where成为 O(n)过滤器。对于查找单个元素,FirstOrDefault通常是更好的选择。如果集合中的项目不多,这通常很好,但如果您需要快速访问,那么 aDictionary<T,U>是更好的选择。

于 2013-08-30T18:52:35.523 回答