以 LINQ 方式初始化锯齿状数组 [英] Initialize a Jagged Array the LINQ Way

查看:23
本文介绍了以 LINQ 方式初始化锯齿状数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个二维锯齿状数组(尽管它总是矩形),我使用传统循环对其进行初始化:

I have a 2-dimensional jagged array (though it's always rectangular), which I initialize using the traditional loop:

var myArr = new double[rowCount][];
for (int i = 0; i < rowCount; i++) {
    myArr[i] = new double[colCount];
}

我想也许某些 LINQ 函数会给我一种优雅的方式来在一个语句中做到这一点.但是,我能想到的最接近的是:

I thought maybe some LINQ function would give me an elegant way to do this in one statement. However, the closest I can come up with is this:

double[][] myArr = Enumerable.Repeat(new double[colCount], rowCount).ToArray();

问题是它似乎正在创建一个 double[colCount] 并分配对为每一行分配一个新数组的 intsead 的引用.有没有办法做到这一点而不会变得太神秘?

The problem is that it seems to be creating a single double[colCount] and assigning references to that intsead of allocating a new array for each row. Is there a way to do this without getting too cryptic?

推荐答案

double[][] myArr = Enumerable
  .Range(0, rowCount)
  .Select(i => new double[colCount])
  .ToArray();

这篇关于以 LINQ 方式初始化锯齿状数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆