【发布时间】:2012-12-25 11:18:03
【问题描述】:
为什么这段代码可以编译:
byte[][] my2DArray =new byte [][]{
new byte[] {1, 2},
new byte[] {3, 4},
};
var r = my2DArray.SelectMany(f=> f);
虽然这个不是:
byte[,] my2DArray =new byte [2,2]{
{1, 2},
{3, 4},
};
var r = my2DArray.SelectMany(f=> f);
[][] 不是和[,] 一样吗?
编辑
我为什么需要那个?
我需要创建一个单维数组,以便将其发送到GetArraySum
当然我可以创建超载,但我想将 mutli dim 转换为 one dim。 (GetArraySum 也提供纯维度数组)。
void Main()
{
byte[][] my2DArray =new byte [][]{
new byte[] {1, 2},
new byte[] {3, 4},
};
var sum = GetArraySum(my2DArray.SelectMany(f=> f).ToArray());
}
int GetArraySum(byte [] ar)
{
return ar.Select(r=>(int)r).Sum();
}
【问题讨论】:
标签: c# .net arrays linq .net-4.0