0

我正在使用并发和协调运行时,并且正在编写类似于文档中描述的代码。以下行无法编译:

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 一起使用的泛型参数的数量是有限制的:它可以使用三个但不能更多。

所以,这段代码编译(一旦你改变 itfunc 使用少一个参数):

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 回答