任务返回类型不是所有代码路径都返回一个值

时间:2016-06-30 11:12:22

标签: c#

我有一个从接口实现的方法,如下所示..

public Task CreateAsync(ApplicationUser user)
{
     if (user == null)
     {
         throw new ArgumentNullException("user");
     }
     Task.Factory.StartNew(() => { Console.WriteLine("Hello Task library!"); }); 
     //I even tried
     //Task.Run(() => { Console.WriteLine("Hello Task library!"); });

}

上面的代码给出了一个错误,并非所有代码路径都返回一个值。

4 个答案:

答案 0 :(得分:10)

需要return

 return Task.Factory.StartNew(() => { Console.WriteLine("Hello Task library!"); });

或更好:

return Task.Run(() => { Console.WriteLine("Hello Task library!"); });

答案 1 :(得分:3)

方法名称中的参数Task表示此方法的返回值。

因此,编译器在某个时刻需要一个return语句,在该语句中返回您在名称中表示的该类型的对象。

public Task CreateAsync(ApplicationUser user)
{

     if (user == null)
     {
         // this part of code will return from the method with an exception
         throw new ArgumentNullException("user");
     }

     // but this part of code is also expected to return something
     return Task.Run(() => { Console.WriteLine("Hello Task library!"); });

}

答案 2 :(得分:0)

需要返回..如果if条件中也可以返回一个

答案 3 :(得分:0)

返回Task.CompletedTask更干净。

public Task CreateAsync(ApplicationUser user)
{
  if (user == null)
  {
     throw new ArgumentNullException("user");
  }

   Task.Factory.StartNew(() => { Console.WriteLine("Hello Task library!"); }); 
   // other operations

   return Task.CompletedTask;
 }