C#中的二维数组

时间:2011-01-14 20:42:27

标签: c# arrays multidimensional-array

第二维可以初始化为动态大小吗?

5 个答案:

答案 0 :(得分:6)

否(因为C#数组维度已修复),但您可以创建List<T>数组。

答案 1 :(得分:4)

你的意思是锯齿状阵列?像这样:

class Program
{
  public int[][] jaggedArray = {
                                 new int[]{ 1 } ,
                                 new int[]{} ,
                                 new int[]{ 1 , 2 , 3 } ,
                               } ;
}

答案 2 :(得分:1)

通常,锯齿状数组的大小。您可以使用两个集合:

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

您可以像访问任何数组一样访问这些值。优点是您无需在创建时指定大小。

编辑:如果“外部”数组已修复,您可以使用:

List<int>[] list = new List<int>[100]();

编辑:看看你的例子,我会说这样的事情可以解决问题:

List<int>[] sVertRange = new List<int>[924];

int nH = 0;
for (int h = 315; h < 1240; h++) 
{
    for (int v = 211; v <= 660; v++) 
    {
            Color c = bmp.GetPixel(h, v);
            if (c.R > 220 && c.G < 153) 
        {
            if(sVertRange[nH] == null)
            {
                sVertRange[nH] = new List<int>();
            }

                    sVertRange[nH].Add(v);
            }
            nH++;
        }
}

答案 3 :(得分:0)

更新:我刚测试了这个并且它不起作用 - 它立即崩溃了。那么如何用Kees的语法写下以下内容?

    int[][] sVertRange = {new int[924] ,new int[]{}};  
    int nH = 0;
    int nV = 0;
    for (int h = 315; h < 1240; h++) {
        for (int v = 211; v <= 660; v++) {
            Color c = bmp.GetPixel(h, v);
            if (c.R > 220 && c.G < 153) {
                sVertRange[nH][nV++] = v;
            }
        nH++;
        }
    }

答案 4 :(得分:0)

如果你想在C#中创建二维数组,每个元素类型都是位图

int num1 = 10,num2 = 20;
Bitmap[][] matrix= new Bitmap[num1][]; 
for (int i = 0; i < num1; i++ )
     matrix[i] = new Bitmap[num2];