Csharp/C#教程:方法返回一个任务,如何获得返回值?分享


方法返回一个任务,如何获得返回值?

假设我有这个代码调用服务并返回一个任务:

public async Task<List> GetList() { client.BaseAddress = new Uri("https://localhost9999/"); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = await client.GetAsync("api/listofstrings"); var json = response.Content.ReadAsStringAsync().Result; var myStr = JsonConvert.DeserializeObject<List>(json); var list = new List(myStr); return list; } 

如果这个methpd只返回一个字符串列表,我可以这样做:

 var myList = new List(); myList = GetList() 

如何在任务中获得类似的结果? 我在考虑这个错误的方式吗? 当然我应该能够将方法的结果(字符串列表)分配给myList

您需要使用await来获取async方法的结果:

 var myList = await GetList(); 

要使用await你调用GetList的方法也应该是async 。如果不是你可以使用.Result属性,但这会阻止执行:

 var myList = GetList().Result; 

await它,像这样:

 var myList = new List(); myList = await GetList(); 

请注意,根据基于任务的异步模式 , GetList应该有一个Async后缀,这会向开发人员提示应该await它:

 var myList = new List(); myList = await GetListAsync(); 

而且,当然,创建一个新列表只是为了扔掉它是愚蠢的:

上述就是C#学习教程:方法返回一个任务,如何获得返回值?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 var myList = await GetListAsync(); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1006013.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐