C# 中的任务:将双精度类型函数作为参数传递时出错



>我正在尝试执行预期回报为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));

最新更新