c# - C# 数组中的数组
问题描述
我一直在尝试创建数组数组。这就是我现在所拥有的,如果有人能指出我正确的方向,我将不胜感激。
我有.txt
一个包含图像路径的文件,每个字符串都有所需的输出,"|"
如下所示:
":\\\img.png|1"
我正在尝试创建具有 2 列和图像路径数作为行的数组。Col 0 是图像的扁平化 rgb 值数组,col 1 输出为 int。
我从线上收到错误Data[i][0] = Flat;
“不能将类型 'int[]' 隐式转换为 'int'”
对于这里更有经验的编码人员来说,这可能是显而易见的,但我无法理解这一点。
static int[][] CreateDataSet(string DatasetPath)
{
string[] Lines = File.ReadAllLines(DatasetPath);
int[][] Data = new int[Lines.GetUpperBound(0)][];
for (int i = 0; i <= Lines.GetUpperBound(0); i++)
{
Data[i] = new int[2];
string[] StringSplit = Lines[i].Split('|');
Data[i][1] = Convert.ToInt32(StringSplit[1]);
int[] Flat = FlattenArray(ImagetoArray(StringSplit[0]));
Data[i][0] = Flat;
}
return Data;
}
解决方案
在数组中,所有元素必须具有相同的类型(或至少必须可分配给元素类型的变量)。
你有两个选择。
坏的:使用对象数组。
object[][] data;
现在您可以将所有内容放入该数组中,但它会很慢(值类型的装箱)并且无类型(难以使用和维护)。
使用元组代替锯齿状数组。
(int[] FlattenedImage, int Output)[] data;
这看起来有点奇怪,但实际上非常有用。它是强类型的,它可以防止装箱,并且它使用漂亮和现代的语言特性。
推荐阅读
- jquery - jquery获取带有数字的json数据
- javascript - 深入讲解用Javascript将简单数组转换为二维数组(矩阵)
- mysql - MySQL 错误:ReverseEngineerTable:在 LONGCHAR 列上跳过索引 table.column
- c# - 回发后 Web 用户控件上的下拉列表为空
- c++ - 为二叉树编写 remove() 函数
- leaflet - 有没有办法计算传单地图视图中有多少可见标记或标记簇?
- sql-server - 如何遍历每个表中的所有表和字段以获取缺失值的百分比
- r - 在粘贴时更改剪贴板的输出
- html - 如何使用键盘键更改 HTML 中的视频
- vscode-remote - 如何确保 VS Code 远程 SSH 服务器在我们集群的计算节点上运行?