Sherryr丶 2024-12-30 23:05 采纳率: 0%
浏览 5

C#交错数组添加元素问题


int[][] array = {new int[] {1,2,3},
                 new int[] {4,5},};
//想要添加新的一行
int[][] arr6 = new int[3][];
for (int i = 0; i < arr6.GetLength(0); i++)
{
    for (int j = 0; j < arr6[i].Length; j++)
    {
        arr6[i][j] = array[i][j];
    }
}
array = arr6;
array[2][0] = 5;

//这样运行会报错,想要实现这个目的应该怎么改?

  • 写回答

2条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    你在代码中遇到的问题是试图访问超出原始数组 array 长度的索引,并对其进行赋值。因为你首先尝试向一个长度为 n 的数组 arr6 添加元素,然后通过 array = arr6 尝试修改原始数组 array 的长度,这在 C# 中是不允许的。你不能直接改变一个数组的长度,除非它是一个可调整大小的集合类型(如 List)。你需要创建一个新的数组来存储更多的元素。以下是一个可能的解决方案:

    你可以创建一个新的数组,然后复制旧数组的元素到新数组中,并在新数组中添加新的元素。这是一个示例代码:

    int[][] array = { new int[] { 1, 2, 3 }, new int[] { 4, 5 } }; // 原数组
    int[][] newArray = new int[array.Length + 1][]; // 创建新数组,长度比原数组多一行
    
    // 复制原数组的元素到新数组的前几行
    for (int i = 0; i < array.Length; i++)
    {
        newArray[i] = array[i];
    }
    
    // 添加新的一行到新数组的最后面
    newArray[array.Length] = new int[] { 5 }; // 新添加的一行,包含你想添加的元素
    
    // 现在新数组包含了旧数组的所有元素以及新添加的一行元素,你可以按需使用这个新数组。
    

    这样你就可以成功地向数组添加新的元素了。记住在 C# 中,数组的大小是固定的,所以你不能直接改变一个已经创建的数组的大小。你需要创建一个新的更大的数组来存储更多的元素。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月30日