1

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

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

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

4

4 回答 4

1

你有两个选择:

  • 一旦你知道你得到了什么,你就可以读取从数据库返回的信息的大小,并在那时分配你的数组空间。
  • 否则,您正在寻找的是具有可变维度的数据结构。以 List 为例:MSDN: List< T >
于 2010-05-27T19:48:19.160 回答
1

使用List<T>和集合的其他示例是最好的方法。我有时会发现

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

语法有点笨拙。幸运的是,有一些选项可以管理这个。

我有时使用的第一个选项是创建别名:

using List<List<int>> = HulkSmashCollection;

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


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

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

于 2010-05-27T19:56:20.943 回答
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 });
于 2010-05-27T19:48:48.780 回答
0

整数集合(例如 List)将为您提供所需的灵活性,并且不会像分配比您需要的更大的数组那样浪费空间。

于 2010-05-27T19:51:41.137 回答