>我正在尝试执行预期回报为double
类型的任务。作为参数,我也向任务传递了一个类型double
的函数。下面是代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace Tasks
{
class Program
{
private static double Dobro(double x)
{
return 2 * x;
}
static void Main(string[] args)
{
Task<double> dobro = new Task<double>(Dobro(15));
Console.ReadKey();
}
}
}
但是,我得到了以下编译时错误作为回报:
CS1503 C# 参数 1:无法从"double"转换为"System.Func">
如何解决这个问题?
如果要从lambda函数本身创建Task
:
Task<double> dobro = new Task<double>(() => Dobro(15));
或者(创建和运行基于 lambda 函数的任务(
Task<double> dobro = Task<double>.Run(() => Dobro(15));
如果您想包装 lambda 函数执行结果(即执行Dobro(15)
并将结果作为完成Task
返回
Task<double> dobro = Task<double>.FromResult(Dobro(15));