[英]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.