質問

2Dの文字列の2D配列でParallel.ForEachを呼び出す方法を考え出すほど問題があります。

string[,] board = new string[,]{
        {"A", "B", "C", "D", "E" },
        {"F", "G", "H", "I", "J"},
        {"K", "L", "M", "N", "O"},
        {"0", "1", "2", "3", "4"}};

Parallel.ForEach(board, row =>
    {
        for (int i = 0; i < row.Length; ++i)
        {
            // find all valid sequences
        }
    });
.

明示的にタイプを指定しない場合は、次のエラーが発生します。

メソッドの型引数 'system.threading.tasks.parallel.foreach(System.Collections.generic.Ienumerable、 System.Action) ''にはできません 使用法から推測されます。お試しください 型引数を指定する 明示的に

明示的な引数を指定するための適切な方法は何ですか?

役に立ちましたか?

解決

あなたの問題は、2次元配列がIEnumerable<one-dimensional-array>を実装しないことです。(IEnumerableを実装していますが、それは配列を「フラットする」文字列のIEnumerableです。)2つのことができる:

  • string[,]をギザギザの配列のアレイの配列、string[][]に変更します。

  • 2次元配列を介して反復する独自の拡張方法を実装し、それをIEnumerable<one-dimensional-array>にします。

他のヒント

Parallel.For

string[,] board = new string[,] {
    {"A", "B", "C", "D", "E" },
    {"F", "G", "H", "I", "J"},
    {"K", "L", "M", "N", "O"},
    {"0", "1", "2", "3", "4"}
};

int height = board.GetLength(0);
int width = board.GetLength(1);

Parallel.For(0, height, y =>
    {
        for (int x = 0; x < width; ++x)
        {
            string value = board[y, x];
            // do whatever you need to do here
        }
    }
);
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top