我正在使用锯齿状数组并且有一点问题(或者至少我认为我有)。这些数组的大小由数据库中返回的行数决定,因此变化很大。我唯一的解决方案是将数组的尺寸设置为非常大,但这似乎......不是做事的最佳方式。
int[][] hulkSmash = new int[10][];
hulkSmash[0] = new int[2] {1,2};
如何在不设置维度的情况下使用锯齿状数组,或者这只是 C# 编程的一个事实?
我正在使用锯齿状数组并且有一点问题(或者至少我认为我有)。这些数组的大小由数据库中返回的行数决定,因此变化很大。我唯一的解决方案是将数组的尺寸设置为非常大,但这似乎......不是做事的最佳方式。
int[][] hulkSmash = new int[10][];
hulkSmash[0] = new int[2] {1,2};
如何在不设置维度的情况下使用锯齿状数组,或者这只是 C# 编程的一个事实?
你有两个选择:
使用List<T>
和集合的其他示例是最好的方法。我有时会发现
List<List<int>> hulkSmash = new List<List<int>>();
语法有点笨拙。幸运的是,有一些选项可以管理这个。
我有时使用的第一个选项是创建别名:
using List<List<int>> = HulkSmashCollection;
这可以防止您一直进行嵌套<<<Types>>>
。在您要输入的任何地方,List<List<int>>
您都可以改为输入HulkSmashCollection
(或更短的内容)。
第二个选项是将列表列表包装在一个名为 MyHulkSmashes 的类中。在这里,您只提供您需要的功能/属性,例如Count
等Find()
。
这两个概念都用于减少屏幕上的代码量,并降低感知的复杂性。
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 });
整数集合(例如 List)将为您提供所需的灵活性,并且不会像分配比您需要的更大的数组那样浪费空间。