我正在尝试编写一个返回文件列表的函数。所以这是一个源代码:
public async IReadOnlyList<StorageFile> GetFiles()
{
StorageFolder folder = await KnownFolders.PicturesLibrary.GetFolderAsync("folder N1");
if (folder != null)
{
IReadOnlyList<StorageFile> fList = await folder.GetFilesAsync();
return fList;
}
}
但为什么它不起作用?错误消息是“无法将IReadOnlyList转换为StorageFile”。怎么了?我的fList变量与函数头中的类型相同。
答案 0 :(得分:3)
异步方法返回Task<T>
,因此请更改您的函数。
public async Task<IReadOnlyList<StorageFile>> GetFiles()
{
StorageFolder folder = await KnownFolders.PicturesLibrary.GetFolderAsync("folder N1");
if (folder != null)
return await folder.GetFilesAsync();
else
return null;
}
答案 1 :(得分:2)
正如@Xyroid所说,你需要使用Task&gt;作为返回类型,因为async方法的返回类型必须为void,Task或Task。随着代码@Xyroid发布。你可以得到这样的文件:
IReadOnlyList<StorageFile> fileList = await GetFiles();
int count = fileList.Count;
答案 2 :(得分:0)
您的列表'fList'使用StorageFile作为其类型 - 它应该使用类型IReadOnlyList。请尝试以下方法:
List<IReadOnlyList> fList = await folder.GetFilesAsync();
更改方法的返回类型:
public async List<IReadOnlyList> GetFiles()
{
...
}