You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将一维List<Numbers>数组改为[39,Enumerable.Range]二维数组?

实现二维数组List<Numbers>[,]的两种方式

方法一:嵌套for循环初始化

直接创建指定维度的二维数组,遍历每个索引位置初始化List<Numbers>实例:

// 定义二维数组的维度
int rows = 39;
int cols = 4500000; // 对应原代码中Enumerable.Range(1, 4500000)的元素数量

// 创建二维数组容器
List<Numbers>[,] numbers = new List<Numbers>[rows, cols];

// 逐个位置初始化空List
for (int i = 0; i < rows; i++)
{
    for (int j = 0; j < cols; j++)
    {
        numbers[i, j] = new List<Numbers>();
    }
}

方法二:结合LINQ批量初始化

如果偏好LINQ风格的写法,可以先生成一维集合再转换为二维数组,需要配合一个扩展方法:

int rows = 39;
int cols = 4500000;

// 生成所有空List的一维集合,再转成二维数组
List<Numbers>[,] numbers = Enumerable.Range(0, rows)
    .SelectMany(_ => Enumerable.Range(0, cols).Select(__ => new List<Numbers>()))
    .Cast<List<Numbers>>()
    .ToArray()
    .To2DArray(rows, cols);

// 扩展方法:将一维数组转为指定维度的二维数组
public static T[,] To2DArray<T>(this T[] source, int rows, int cols)
{
    T[,] result = new T[rows, cols];
    int index = 0;
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < cols; j++)
        {
            result[i, j] = source[index++];
        }
    }
    return result;
}

注意事项

  • 若项目不允许新增扩展方法,优先用第一种嵌套循环方式,逻辑更直接且无额外依赖。
  • 4500000列会创建大量List<Numbers>实例,需注意内存占用,避免引发内存溢出。

内容的提问来源于stack exchange,提问作者Josh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:34:57