委托和等待任务
delegate and the await task
创建方法委托,我 运行 遇到一个问题:
D_AmortizationCalsAsync d_AmortizationCalsAsync = AmortizationCalsAsync; // here i have error
public delegate Func<Task<decimal>> D_AmortizationCalsAsync(int amortization, int installmentNumber);
public async Task<decimal> AmortizationCalsAsync(int amortization, int installmentNumber)
{
(...)
}
Tak AmortizationCalsAsync (int, int) return 类型有误
https://docs.microsoft.com/en-us/dotnet/csharp/misc/cs0407?f1url=%3FappId%3Droslyn%26k%3Dk(CS0407)
AmortizationCalsAsync
return 是 Task<decimal>
,不是 Func<Task<decimal>>
。如果您想将其分配给委托,您需要更改委托类型:
public delegate Task<decimal> D_AmortizationCalsAsync(int amortization, int installmentNumber);
或使用匿名 lambda 创建具有正确签名和 return 类型的函数(即接受 2 个整数的函数和 return 没有参数的函数 Task<decimal>
return类型):
D_AmortizationCalsAsync d_AmortizationCalsAsync =
(a, i) => () => AmortizationCalsAsync(a, i);
创建方法委托,我 运行 遇到一个问题:
D_AmortizationCalsAsync d_AmortizationCalsAsync = AmortizationCalsAsync; // here i have error
public delegate Func<Task<decimal>> D_AmortizationCalsAsync(int amortization, int installmentNumber);
public async Task<decimal> AmortizationCalsAsync(int amortization, int installmentNumber)
{
(...)
}
Tak AmortizationCalsAsync (int, int) return 类型有误
https://docs.microsoft.com/en-us/dotnet/csharp/misc/cs0407?f1url=%3FappId%3Droslyn%26k%3Dk(CS0407)
AmortizationCalsAsync
return 是 Task<decimal>
,不是 Func<Task<decimal>>
。如果您想将其分配给委托,您需要更改委托类型:
public delegate Task<decimal> D_AmortizationCalsAsync(int amortization, int installmentNumber);
或使用匿名 lambda 创建具有正确签名和 return 类型的函数(即接受 2 个整数的函数和 return 没有参数的函数 Task<decimal>
return类型):
D_AmortizationCalsAsync d_AmortizationCalsAsync =
(a, i) => () => AmortizationCalsAsync(a, i);