このコードがコンパイルされる理由:
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);
[][]
ではありません[,]
か?
編集
なぜそれが必要なのですか?
に送信されるように、1 次元配列を作成する必要があります。 GetArraySum
もちろん、オーバーロードを作成できますが、マルチ ディムを 1 ディムに変換したかったのです。(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();
}