亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

了解 Task 與 Task<T> 作為返回類型

了解 Task 與 Task<T> 作為返回類型

C#
九州編程 2023-08-20 14:40:06
如果這個問題已經在某個地方得到解決,我深表歉意,但有關該主題的資源數量相當龐大。我編寫了以下等待異步調用的方法public async Task GetAllObjectsNames(string bucketName){    if (string.IsNullOrEmpty(bucketName))    {        throw new ArgumentNullException(nameof(bucketName), "bucket name can't be null or empty string");    }    var request = new ListObjectsRequest    {        BucketName = bucketName    };    await  s_client.ListObjectsAsync(request);}致力于解決返回 aTask和返回 a之間的區別Task<T>public async Task<IEnumerable<string>> GetAllObjectsNames(string bucketName){    if (string.IsNullOrEmpty(bucketName))    {        throw new ArgumentNullException(nameof(bucketName), "bucket name can't be null or empty string");    }    var request = new ListObjectsRequest    {        BucketName = bucketName    };    var response = await s_client.ListObjectsAsync(request);    return response.S3Objects.Select(o => o.Key);}有人可以插話嗎?
查看完整描述

2 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

Task表示可能正在進行、或者可能已取消、發生故障或已完成的操作。CompletedTask不包含任何類型的結果,它僅表示操作已完成的事實。


Task<T>也表示可能正在進行、或可能已取消、發生故障或可能已完成的操作。但是,已完成的Task<T>將包含該操作的結果,然后您可以讀取該結果。


你可以寫:


public async Task<IEnumerable<string>> GetAllObjectsNames(string bucketName)

// ...

var objects = await GetAllObjectsNames("Foo");

await GetAllObjectsNames("Foo"); // Throws away the result of the Task

但是你只能寫:


public async Task GetAllObjectsNames(string bucketName)

// ...

await GetAllObjectsNames("Foo");

Task此版本的返回值不能GetAllObjectsNames包含結果,因此您只能知道該操作何時完成 - 您無法從中獲取結果。


您可以用作方法Task的返回值UploadObject- 您關心上傳操作何時完成,但沒有結果可供您讀取。您可能會使用Task<T>for GetAllObjectsNames,因為該操作的目的是獲取一些值供您使用。


void從概念上講,它與返回(不返回結果)的方法或返回其他任何內容的方法之間的區別相同。Action或者和之間的區別Func<T>。


查看完整回答
反對 回復 2023-08-20
?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

System.Threading.Tasks.Task<TResult>表示可以返回值(類型為 TResult)的異步操作。

(如果有幫助,這類似于System.Func<…, TResult>,它基本上是一個返回值的操作)。

System.Threading.Tasks.Task表示異步操作(不返回值)。

(同樣,這類似于System.Action<…>。)


查看完整回答
反對 回復 2023-08-20
  • 2 回答
  • 0 關注
  • 186 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號