作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果你有一个像 string[][] 这样的数组,假设前一个数组是矩形的(不是锯齿状的),那么将它转换成像 string[,] 这样的常规多维数组的最聪明的方法是什么?
我能想到的唯一方法是获取维度,用这些维度声明一个多维数组,然后遍历源数组并填充新数组。但我想知道是否有任何更简单的解决方案。
最佳答案
这只是为了好玩:完全同意这是一种矫枉过正,最好的方法是正常的迭代。
//example jagged array
string[][] ja = new string[2][];
for (int i = 0; i < 2; i++)
ja[i] = Enumerable.Range(0, 3).Select(k => "Cell [" + i + "," + k + "]").ToArray();
//conversion to a 2D-array
string[,] ka = new[] { new string[ja.Length, ja[0].Length] }
.Select(_ => new { x = _, y = ja.Select((a, ia) => a.Select((b, ib) => _[ia, ib] = b).Count()).Count() })
.Select(_ => _.x)
.First();
//dump result
for (int i = 0; i < 2; i++)
for (int k = 0; k < 3; k++)
{
Console.WriteLine(ka[i, k]);
}
几乎不可读,但它有效(至少当初始数组不为空/格式不正确时)。
关于c# - 将 [][] 形式的数组转换为 [,] 的最聪明方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18276990/
我是一名优秀的程序员,十分优秀!