0

私は Gtk# を使用しており、に変換する必要がありList<Byte[]>ますByte[]この操作のサンプルはこちらで見つかりましたが、これは .NET Framework のサンプルであり、Gtk# で実行しようとすると、コンパイル エラーが発生します。

System.Collections.Generic.List<byte[]>' does not contain a definition forSelectMany と入力し、拡張メソッドSelectMany' of typeSystem.Collections.Generic.List が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?) (CS1061)」.

このエラーを解決するにはどうすればよいですか、または他の Gtk# の変換方法を使用できますか?

4

3 に答える 3

0

IEnumerable の拡張機能は、後の .net フレームワーク バージョンの一部であり、Gtk# には含まれていないか、別の名前である可能性があります。

簡単な (もっと簡単な方法があるかどうかはわかりませんが) 方法は、配列に必要な合計サイズを計算し、そのサイズに初期化することです。次に、リストをループし、配列のどこまで進んでいるかを追跡して、各 byte[] のデータを新しい byte[] に配置します。

private static Byte[] ConvertList(List<Byte[]> list)
    {
        int totalLength = 0;

        foreach (byte[] b in list)
        {
            totalLength += b.Length;
        }

        byte[] result = new byte[totalLength];

        int currentPosition = 0;

        foreach (byte[] byteArray in list)
        {
            foreach (byte b in byteArray)
            {
                result[currentPosition] = b;
                currentPosition++;
            }
        }

        return result;
    }
于 2013-04-24T06:58:45.517 に答える