2009-08-27 17 views
0

我正在使用Concurrency and Coordination Runtime,並且正在編寫類似於文檔中描述的代碼。下面一行無法編譯:爲什麼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因爲文檔使用與類型參數是方法,它顯然通用。

(我要在這裏發表我自己的答案,那就是encouraged據我所知)

回答

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); 
相關問題