锯齿状阵列尺寸

时间:2010-05-27 19:45:07

标签: c# jagged-arrays

我正在使用锯齿状数组并且有一些问题(或者至少我认为我这样做)。这些数组的大小取决于数据库中返回的行数,因此它是非常可变的。我唯一的解决方案是将数组的尺寸设置得非常大,但这似乎......不是最好的做事方式。

int[][] hulkSmash = new int[10][];
hulkSmash[0] = new int[2] {1,2};

如何在不设置尺寸的情况下使用锯齿状数组,或者这只是C#编程的一个事实?

4 个答案:

答案 0 :(得分:1)

你有两个选择:

  • 您可以读取从数据库返回的信息的大小,并在您知道所获得的内容后分配您的阵列空间。
  • 否则,您正在寻找的是具有可变维度的数据结构。以列表为例:MSDN: List< T >

答案 1 :(得分:1)

使用List<T>和集合的其他示例是继续进行的最佳方式。我有时会找到

List<List<int>> hulkSmash = new List<List<int>>();

语法有点笨拙。幸运的是,有一些选项可以解决这个问题。

我有时使用的第一个选项是制作别名:

using List<List<int>> = HulkSmashCollection;

这可以防止您不得不一直执行嵌套<<<Types>>>。在您输入List<List<int>>的任何地方,您都可以改为键入HulkSmashCollection(或更短的内容)。


第二个选项是将列表列表包含在名为MyHulkSmashes的类中。在这里,您只提供所需的功能/属性,例如CountFind()等。

这两个概念都用于减少屏幕上的代码量,并降低感知复杂性。

答案 2 :(得分:0)

List<List<int>> hulkSmash = new List<List<int>>();
hulkSmash.Add(new List<int>() { 1, 2 });

List<int[]> hulkSmash = new List<int[]>();
hulkSmash.Add(new int[] { 1, 2 });

答案 3 :(得分:0)

一组int(例如List)将为您提供所需的灵活性,而不是浪费空间,因为分配的数组比您需要的大得多。