二维数组必须提前定义好大小,并且定义之后不能更改。一开始用二维数组存储一些坐标,但坐标数是不定的,所以每次用这个数组的时候都要去除空白,而去除空白只能用新建二维数组来实现。
二维数组无法按行或列截取数据,只能用循环一个个元素读取。
List当一维数组很方便,有很多强大的方法使用,但是作为List<List<T>>这样的二维数组使用的时候,就只能拆分开来使用。赋值的时候要特别注意,别用同一个List<T>给行赋值,要不然所有行数据都一样。List是引用类型,传递的是引用地址,所以二维List赋值时要用不同的List<T>。
二维数组给二维List 赋值应该用下面这样的方式:
double[,] ROIs = new double[200,4] ;
List< List<double>> roiList=new List<List<double>>();
for (int ii = 0; ii <ROIs.Length/ 4; ii++)
{
//这个定义不能放在for循环外,要不然数据都会变成最后一行
List<double> arrlist = new List<double>();
for (int i = 0; i < 4; i++)
{
if (ROIs[ii, 0] != 0)
{
arrlist.Add(ROIs[ii, i]);
}
else
break;
}
if (ROIs[ii, 0] != 0)
{
roiList.Add(arrlist);
}
else
break;
}
DataGridView的赋值也比想象中麻烦,我觉得既然是表格,就应该直接把二维数组作为数据源就可以显示,但找了一晚上也没找到这种方法。用二维List也不行,都要先建立DataTable类型,把值一个个传进去,然后再把新建的DataTable赋值给表格的DataSourse。
//List<List<double>> roi 二维List
DataTable dt = new DataTable();
//手动创建列
dt.Columns.Add("1", typeof(double));
dt.Columns.Add("2", typeof(double));
dt.Columns.Add("3", typeof(double));
dt.Columns.Add("4", typeof(double));
for (int ii = 0; ii < roi.Count; ii++)
{
DataRow dr = dt.NewRow() ;
for (int i = 0; i < row; i++)
{
dr[i]= roi[ii][i];
}
dt.Rows.Add(dr);
}
gridView.DataSource = null;
gridView.DataSource = dt;
放两个链接便于后期查询:DataGridView用法介绍https://www.cnblogs.com/lcbiao/articles/2510669.html
List用法介绍https://www.cnblogs.com/dyhao/p/9501479.html二维数组就是循环赋值取值,没太多特别的功能,就不放另外的链接了。