委托和等待任务

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);