第二维是否可以初始化为动态可调大小?
不行(因为C#数组的维度是固定的),但是你可以创建一个List<T>
数组。
你的意思是不规则数组吗?像这样:
class Program
{
public int[][] jaggedArray = {
new int[]{ 1 } ,
new int[]{} ,
new int[]{ 1 , 2 , 3 } ,
} ;
}
通常,一个锯齿数组都有一个大小。你可以使用两个集合:
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++;
}
}
更新:我刚刚测试了一下,它不起作用——它会立即崩溃。那么以下内容如何使用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++;
}
}
如果你想在C#中创建二维数组,每个元素类型是位图
int num1 = 10,num2 = 20;
Bitmap[][] matrix= new Bitmap[num1][];
for (int i = 0; i < num1; i++ )
matrix[i] = new Bitmap[num2];