我有一个从接口实现的方法,如下所示..
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!"); });
}
上面的代码给出了一个错误,并非所有代码路径都返回一个值。
答案 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;
}