なぜC#がCCRのIterativeTaskは、非ジェネリックであると言うのでしょうか?

StackOverflow https://stackoverflow.com/questions/1342106

  •  20-09-2019
  •  | 
  •  

質問

私は同時実行性と協調ランタイムとは何かのようなコードを書いていますマニュアルに記載。次の行は、コンパイルに失敗します:

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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top