首页 > 解决方案 > 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;
}

标签: c#arrays

解决方案


在数组中,所有元素必须具有相同的类型(或至少必须可分配给元素类型的变量)。

你有两个选择。

坏的:使用对象数组。

object[][] data;

现在您可以将所有内容放入该数组中,但它会很慢(值类型的装箱)并且无类型(难以使用和维护)。

使用元组代替锯齿状数组。

(int[] FlattenedImage, int Output)[] data;

这看起来有点奇怪,但实际上非常有用。它是强类型的,它可以防止装箱,并且它使用漂亮和现代的语言特性。


推荐阅读