代码之家  ›  专栏  ›  技术社区  ›  johnc

在.NET 3.5及更高版本中处理多维数据结构

  •  3
  • johnc  · 技术社区  · 15 年前

    我想构建一个二维(此时不参差不齐)对象数组。

    我可以很容易地构建二维数组[,],如果它是可用的最佳选项,我也会这样做,但是为了.NET的列表和字典结构的高级功能,我倾向于避免使用数组。

    我也可以使用list<list<t>>来存储二维数组,但我想知道在.NET 3.5或更高版本中是否有任何最佳实践或实现的数据结构来处理具有比数组更灵活/更全面功能的类型化二维结构?

    我对SSAS/OLAP样式的答案不感兴趣。

    3 回复  |  直到 15 年前
        1
  •  1
  •   waterlooalex    15 年前
    • 一个二维数组将非常好地工作,它将消耗最少的RAM,并且具有最快的查找时间。它通常可以很好地处理只读数据
    • 列表列表、列表字典、数组字典或字典字典也能很好地工作,这取决于您需要如何访问数据等。
        2
  •  1
  •   Community Jaime Torres    7 年前

    我将研究.NET 3.5的元组实现。元组将在.NET 4.0中是本机的,因此这将是向前兼容的:

        3
  •  1
  •   Sam Harwell    15 年前

    数组是CLI基本数据类型之一。然而,“szarray”(基于0的一维索引)是最快的数组。就是你看到的那个 int[] . 不管怎样,如果您有一组固定大小的数据,那么数组(单维或多维)将提供最佳性能。

    如果内部优化使二维数组比手动对一维数组使用行主索引更快,我一点也不会感到惊讶。如果是相反的话,我也不会感到惊讶。如果这很重要,请确保使用质量分析器(无论哪种方法在实际应用中都应该很快,我在这里讨论矩阵数学)。