使用FSharp中的Task.FromResult(0)

时间:2014-11-16 19:01:35

标签: f#

我正在将一些遗留的C#类重写为F#。其中一个类使用this的单个方法实现IIdentityMessageService.SendAsync(identityMessage)

在C#代码中,我看到了这个

    if (transportWeb != null)
        return transportWeb.DeliverAsync(message);
    else
        return Task.FromResult(0);

我在F#中试过这个

    if  transportWeb != null then
        transportWeb.DeliverAsync(message)
    else
        Task.FromResult(0)

我在最后一行收到错误

This expression was expected to have type
    Task    
but here has type
    Task<'a>    

我错过了什么?感谢

1 个答案:

答案 0 :(得分:8)

看起来DeliverAsync会返回Task,因此您需要两个分支才能返回TaskTask.FromResult(0)会返回Task<int>,因此您需要明确地将其翻译为Task

else
    Task.FromResult(0) :> Task
相关问题