なぜC#がCCRのIterativeTaskは、非ジェネリックであると言うのでしょうか?
質問
私は同時実行性と協調ランタイムとは何かのようなコードを書いていますマニュアルに記載。次の行は、コンパイルに失敗します:
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
ドキュメントは型引数でそのメソッドを使用していますし、それは明らかにジェネリックですので、mistifyingされます。
(私はここに私自身の答えを投稿するつもりです、それは<のhref = "https://meta.stackexchange.com/questions/12513/stackoverflow-should-i-answer-my-own-question-or -not ">私はそれを理解する奨励)
解決
これは、1つのIterativeTaskで使用できる汎用的なパラメータの数には限界があることが判明:それは3が、これ以上を取ることができます。
。だから、このコードのコンパイル(あなたが1つの少ない引数を使用する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);
所属していません StackOverflow