不能隐式转换类型'& # 39; system.threading.tasks.bool # 39;任务

本文关键字:system threading tasks 任务 bool 不能 转换 类型 | 更新日期: 2023-09-27 18:07:07

我有这个错误:"不能隐式转换类型'bool'到'system.threading.tasks.task bool'"在我的服务实现代码。你能帮我改一下代码吗?

public Task<bool> login(string usn, string pwd)
    {
        DataClasses1DataContext auth = new DataClasses1DataContext();
        var message = from p in auth.Users
                      where p.usrName == usn && p.usrPass == pwd
                      select p;
        if (message.Count() > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

不能隐式转换类型'& # 39; system.threading.tasks.bool # 39;任务

您需要明确是否希望此操作异步进行。

Async Operation为例:

public async Task<bool> login(string usn, string pwd)
{
    DataClasses1DataContext auth = new DataClasses1DataContext();
    var message = await (from p in auth.Users
                  where p.usrName == usn && p.usrPass == pwd
                  select p);
    if (message.Count() > 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

如果你不需要它是一个异步操作,试试这个:

public bool login(string usn, string pwd)
{
    DataClasses1DataContext auth = new DataClasses1DataContext();
    var message = from p in auth.Users
                  where p.usrName == usn && p.usrPass == pwd
                  select p;
    if (message.Count() > 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

注意:asyncawait兼容。net 4.5和c# 5.0及以上版本

如果您添加Task.FromResult,即使您的方法不是async,您也可以将其编译并工作。我必须这样做,当连接身份,这是所有的async,遗留后端。

的例子:

public override Task<bool> IsEmailConfirmedAsync(string userId)
{
  var profile = UserProfileType.FetchUserProfile(AtlasBusinessObject.ClientId.ToString(), decimal.Parse(userId));
  Task.FromResult(profile.EmailAddress.NullIfEmpty() != null);
}