2 回答

TA貢獻1744條經(jīng)驗 獲得超4個贊
Task表示可能正在進行、或者可能已取消、發(fā)生故障或已完成的操作。CompletedTask不包含任何類型的結(jié)果,它僅表示操作已完成的事實。
Task<T>也表示可能正在進行、或可能已取消、發(fā)生故障或可能已完成的操作。但是,已完成的Task<T>將包含該操作的結(jié)果,然后您可以讀取該結(jié)果。
你可以寫:
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包含結(jié)果,因此您只能知道該操作何時完成 - 您無法從中獲取結(jié)果。
您可以用作方法Task的返回值UploadObject- 您關心上傳操作何時完成,但沒有結(jié)果可供您讀取。您可能會使用Task<T>for GetAllObjectsNames,因為該操作的目的是獲取一些值供您使用。
void從概念上講,它與返回(不返回結(jié)果)的方法或返回其他任何內(nèi)容的方法之間的區(qū)別相同。Action或者和之間的區(qū)別Func<T>。

TA貢獻1848條經(jīng)驗 獲得超10個贊
System.Threading.Tasks.Task<TResult>
表示可以返回值(類型為 TResult)的異步操作。
(如果有幫助,這類似于System.Func<…, TResult>
,它基本上是一個返回值的操作)。
System.Threading.Tasks.Task
表示異步操作(不返回值)。
(同樣,這類似于System.Action<…>
。)
- 2 回答
- 0 關注
- 181 瀏覽
添加回答
舉報