0

Concurrency and Coordination Runtimeを使用しており、ドキュメントに記載されているものと同様のコードを記述しています。次の行はコンパイルに失敗します:

yield return new IterativeTask<string,Object,Object,long[]>("Hi",a,b,ls, itfunc);

コンパイラは次のエラーメッセージを表示します。

The non-generic type 'Microsoft.Ccr.Core.IterativeTask' cannot be used with type arguments

ドキュメントは型引数でそのメソッドを使用しており、明らかに一般的であるため、これは誤解を招きます。

(私はここに私自身の答えを投稿するつもりです、それは私がそれを理解しているので奨励されています)

4

1 に答える 1

3

IterativeTaskで使用できるジェネリックパラメーターの数には制限があることがわかりました。3つかかることもありますが、それ以上かかることはありません。

したがって、このコードはコンパイルされます(itfuncを変更して引数を1つ少なくすると):

yield return new IterativeTask<string,Object,long[]>("Hi",a,ls, itfunc);

引数のすべての情報が本当に必要な場合は、それらを保持するための型を作成できます。

struct Z {
  string msg;
  Object one;
  Object two;
  long[] ls;
}

Z z = new Z { msg="Hi", one=a, two=b, ls= longs };
yield return new IterativeTask<Z>(z, itfunc);
于 2009-08-27T16:13:28.057 に答える