【问题标题】:C# containers - vector,. list, queue, stack etcC# 容器 - 矢量,。列表、队列、堆栈等
【发布时间】:2012-01-08 10:16:57
【问题描述】:

从我看到的类似标题中,这些可能在 C# 中不可用。因为它们是如此基本和有用,所以它们必须在那里,但可能被称为别的东西。

如果它们可用,它们是否支持排序/搜索/插入/删除/唯一等 - 常用算法?

【问题讨论】:

    标签: c# list vector stack queue


    【解决方案1】:

    您正在寻找 System.Collections.Generic 中的类以及 LINQ to Objects。

    【讨论】:

      【解决方案2】:

      大多数情况下,这些名称是您猜到的。 System.Collections.Generic namespace 包含:

      由于它们都实现了IEnumerable<T> generic interface,因此您可以使用来自Enumerable class 的扩展方法,包括OrderBy/OrderByDescending(“排序”)和Distinct(“唯一”)。这三个类中的每一个都提供了自己特定的方法来添加和删除集合中的元素。

      【讨论】:

        【解决方案3】:

        它们是可用的,而且它们还支持 Linq 的 AWESOMENESS。这使您可以做很多更酷的事情,而不仅仅是您在 C++ 标准库中找到的基本算法。

        【讨论】:

        • 不同意。 C++ 和 STL 所拥有的是 [几乎] 完整的某事物的实现,学术界知道并且知识渊博的工程师会期待数十年。另一方面,C# 所拥有的是一个来源或混乱,并惊讶于“为什么他们没有这个?”或“为什么他们称一个显然不是[链接]列表的列表?”。当然,每个 C# 版本的 C# 容器都在逐渐成熟,但效果仍远未达到最佳。
        【解决方案4】:

        在 .NET 4.0 中,您有

        System.Collections.Generic.Stack<T>
        System.Collections.Generic.Queue<T>
        

        还有很多其他的。

        对于这些集合类的常见操作,请将Using System.Linq; 添加到您的 C# 代码中。

        【讨论】:

        • 通用集合自框架 2.0 起就可用。集合类上的常见操作不需要 LINQ。只有当你想在它们上使用 LINQ 或 LINQ 扩展方法时,你才需要它。
        猜你喜欢
        • 2023-03-27
        • 2015-11-16
        • 1970-01-01
        • 2021-03-17
        • 2014-04-21
        • 2013-09-18
        • 1970-01-01
        • 2019-02-13
        • 2020-06-12
        相关资源
        最近更新 更多