C# - 使用引用调整锯齿状数组的大小

基督教890

我写了一个小项目,它将多个 CSV 文件读入一个锯齿状数组(每个 csv 在 1 个锯齿状数组中)。所有的数组都将存储在一个列表中。之后,我有一个给定的维度,我想将每个数组的大小调整为(具有给定的列和行)。编码:

    private void resizeArray( double[][] matrixToResize, int maxRow, int maxColumn)
    {
        Array.Resize(ref matrixToResize, maxRow);

        for (int i = 0; i < matrixToResize.Length; i++)
        {
            Array.Resize(ref matrixToResize[i], maxColumn);
        }
    }

    private void resizeArrayList(List<double[][]> csvList, Dimension dimension)
    {
        foreach (Double[][] matrix in csvList)
        {
            resizeArray(matrix, dimension.Max_Rows, dimension.Max_Columns);
        }
    }

resizeArrayList将被称为 1。然后这将调用resizeArray调整行的大小,然后调整每行给定数量的列的大小。

我的问题:resizeArray这一切运作良好,例如:我有5行5列的一个阵列,并希望10行10列,

我首先将此数组大小调整为 10 行,然后将每行调整为 10 列。resizeArray返回之前resizeArrayList看起来不错,我有 10 行,每 10 列。但是在代码回退到该方法之后,resizeArrayList它有 5 行,每行 10(!) 列。所以基本上列调整大小工作正常,但添加的 5 行消失了,它回到了原来的行大小。

我知道我可以通过将整个锯齿状数组传回并将其读入列表来解决这个问题。但为什么会这样呢?

两次我都使用 resize 函数和 ref。但它只保存列而不是调整大小的行。

佐兰·霍瓦特

您必须matrix通过引用传递变量,因为在resizeArray方法中正在修改引用本身按照您的方式,csvList列表的所有元素都保持不变——长度为 5 的数组——因为csvList仍然包含旧引用,即调整大小之前的引用。

但是,matrix是循环变量,您不能在循环内更改它,这意味着您不能通过引用传递它resizeArray因此,我认为您最好创建一个全新的列表作为结果:

private double[][] resizeArray(double[][] matrixToResize,
                               int maxRow, int maxColumn)
{
    Array.Resize(ref matrixToResize, maxRow);

    for (int i = 0; i < matrixToResize.Length; i++)
    {
        Array.Resize(ref matrixToResize[i], maxColumn);
    }

    return matrixToResize;
}

private void resizeArrayList(List<double[][]> csvList, Dimension dimension)
{
    csvList = csvList
        .Select(matrix => 
            resizeArray(matrix, dimension.Max_Rows, dimension.Max_Columns))
        .ToList();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C中转置锯齿状数组?

来自分类Dev

C#锯齿状数组:超出数组问题的范围

来自分类Dev

使用插入排序C#按第二列对锯齿状数组进行排序

来自分类Dev

使用插入排序C#按第二列对锯齿状数组进行排序

来自分类Dev

声明锯齿状数组时,c#StackOverflowException

来自分类Dev

C#从锯齿状数组中删除重复项

来自分类Dev

声明锯齿状数组时,c#StackOverflowException

来自分类Dev

C#锯齿状数组会自行更改

来自分类Dev

使用锯齿状数组

来自分类Dev

使用锯齿状数组

来自分类Dev

在C#中将多维数组转换为锯齿状数组

来自分类Dev

如何在C#中检查锯齿状数组不是多维数组

来自分类Dev

当其他数组更新时,C#锯齿状数组始终更新

来自分类Dev

如何在C#中将数据表转换为锯齿状数组?

来自分类Dev

将锯齿状数组传递给C#中的方法

来自分类Dev

如何从锯齿状数组中为C#中的文本框设置值?

来自分类Dev

出现错误:尝试在C中实现锯齿状数组时需要lvalue

来自分类Dev

C#多维数组可以容纳的最大维数是多少?锯齿状的呢?

来自分类Dev

C# 将锯齿状数组保存到驱动器

来自分类Dev

锯齿状数组

来自分类Dev

C#锯齿状数组:编译器无法将类型'char []'隐式转换为'int []'。为什么?

来自分类Dev

如何从C#中的锯齿状数组中删除一列和一行

来自分类Dev

将字符串的锯齿状数组转换为C#中的字符串列表

来自分类Dev

如何使用C ++ API在HDF5文件中写入/读取锯齿状阵列?

来自分类Dev

不同大小的数组(锯齿状数组)的Python集合,Dask?

来自分类Dev

锯齿状数组OutOfMemoryException

来自分类Dev

锯齿状数组混乱

来自分类Dev

如何在C#中保留锯齿状数组的某些列和行并删除C#中不需要的列和行

来自分类Dev

C#中是否有一种类似于Java的方式来初始化锯齿状数组

Related 相关文章

  1. 1

    在C中转置锯齿状数组?

  2. 2

    C#锯齿状数组:超出数组问题的范围

  3. 3

    使用插入排序C#按第二列对锯齿状数组进行排序

  4. 4

    使用插入排序C#按第二列对锯齿状数组进行排序

  5. 5

    声明锯齿状数组时,c#StackOverflowException

  6. 6

    C#从锯齿状数组中删除重复项

  7. 7

    声明锯齿状数组时,c#StackOverflowException

  8. 8

    C#锯齿状数组会自行更改

  9. 9

    使用锯齿状数组

  10. 10

    使用锯齿状数组

  11. 11

    在C#中将多维数组转换为锯齿状数组

  12. 12

    如何在C#中检查锯齿状数组不是多维数组

  13. 13

    当其他数组更新时,C#锯齿状数组始终更新

  14. 14

    如何在C#中将数据表转换为锯齿状数组?

  15. 15

    将锯齿状数组传递给C#中的方法

  16. 16

    如何从锯齿状数组中为C#中的文本框设置值?

  17. 17

    出现错误:尝试在C中实现锯齿状数组时需要lvalue

  18. 18

    C#多维数组可以容纳的最大维数是多少?锯齿状的呢?

  19. 19

    C# 将锯齿状数组保存到驱动器

  20. 20

    锯齿状数组

  21. 21

    C#锯齿状数组:编译器无法将类型'char []'隐式转换为'int []'。为什么?

  22. 22

    如何从C#中的锯齿状数组中删除一列和一行

  23. 23

    将字符串的锯齿状数组转换为C#中的字符串列表

  24. 24

    如何使用C ++ API在HDF5文件中写入/读取锯齿状阵列?

  25. 25

    不同大小的数组(锯齿状数组)的Python集合,Dask?

  26. 26

    锯齿状数组OutOfMemoryException

  27. 27

    锯齿状数组混乱

  28. 28

    如何在C#中保留锯齿状数组的某些列和行并删除C#中不需要的列和行

  29. 29

    C#中是否有一种类似于Java的方式来初始化锯齿状数组

热门标签

归档