Cannot implicitly convert type to Func
我正在尝试编写一个异步应用程序以从(远程)库中获取值。 我偶然发现了一个操作方法,给出了错误"无法将类型隐式转换为Func"。
我尝试了各种返回类型...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private static void CallAsynch2() { var tasks = new List<Task<KeyValuePair<int,string>>(); for (int i = 0; i < Iterations; i++) tasks.Add(Task<KeyValuePair<int, string>>.Factory.StartNew(GetValueAction(i))); } private static Func<KeyValuePair<int, string>> GetValueAction(int i) { return new KeyValuePair<int, string>(i, i.ToString()); //return ClassLibraryService.RandomValue.GetRandomValue(i); } |
我希望它返回值以填充字典。
返回
1
您要返回它的
1 |
Func是匿名方法。
这意味着,您给它零或一些值,并期望得到回报。
在这一行:
1 |
您采用KeyValuePair类型的对象,并尝试将其用作匿名方法。
由于种种原因这不能工作,但是为什么会吹这个答案。
在您的情况下,您需要一个匿名方法,该方法接受零个参数并返回KeyValuePair。
正确的代码是:
1 |
注意"()=>"语法。
这是一个lamda表达式,它隐式转换为Func。