操作员 !不能应用于类型为 Task<bool> 的操作数

cas*_*las 4 c# datetime

我有以下实现并Async Task<bool>在方法中添加了一个操作ChangeDate(),以前它只是bool.

在下面的行中if (!ChangeDate())

操作员 !不能应用于任务类型的操作数

 public DateTime Date
 {
    get { return _date; }
    set
    {
      if (!ChangeDate())
      {
         return;
      }

      _date = value.Date;

    }
} 

private async Task<bool> ChangeDate()
{
  if (IsSave)
  {
     await Mvx.Resolve<IUserDialogs>().ConfirmAsync(new ConfirmConfig
     {
        Message = "Are you sure ?",
        OnConfirm = b =>
        {
            if (b)
            {
              Save();
            }
         }
      });
   }
   return true;
 }
Run Code Online (Sandbox Code Playgroud)

use*_*598 12

找到这个答案: How to make an Asynchronous Method return a value?

您需要创建一个异步辅助方法,并调用它而不是仅调用您的 setter,因为正如 @Ron Beyer 指出的那样,await 调用在属性中不起作用。

代替:

if(!ChangeDate())
Run Code Online (Sandbox Code Playgroud)

和:

if( !(await ChangeDate()) )
Run Code Online (Sandbox Code Playgroud)

  • Await 只能用在异步方法中,而该属性则不然。 (2认同)