簡體   English   中英

為什么會出現編譯器錯誤:無法將 void 轉換為字符串,因為沒有發生強制轉換

[英]Why there is compiler error: Cannot convert void to string, where as there is no casting happening

我不確定為什么會出現編譯器錯誤, Argument 1 Cannot convert 'void' to 'string' ,因為沒有發生強制轉換。 下面的代碼創建了一個方法列表:

void FunctionList(string srcBucket, List<List<string>> pdfFileList, IAmazonS3 s3client)
{
    List<Action> actions = new List<Action>();
    foreach (var list in pdfFileList)
       list.Add(RenameFilesAsync(srcBucket, list, s3client).Wait()); // Getting error here
}

public async Task RenameFilesAsync(string srcBucket, List<string> pdfFiles, IAmazonS3 s3client)
{
  //Some code here
}

在此處輸入圖像描述

您在RenameFilesAsync上的簽名只返回一個Task ,而不是Task<T> 如果不指定類型,則不會返回值,因此看起來像void

這是異步返回類型的鏈接: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/async-return-types

嘗試替換此行

list.Add(RenameFilesAsync(srcBucket, list, s3client).Wait());

有兩條線

string s = await RenameFilesAsync(srcBucket, list, s3client).Wait();
list.Add(s);

然后應該更容易調試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM