c# - 在 foreach 循环之外使用 IEnumerable 列表

标签 c# ienumerable

我正在使用 IEnumerable在 for each 循环中,如下所示:

foreach (IListBlobItem blobItem in container.ListBlobs())
{        
    if (blobItem is CloudBlobDirectory)
    {
        CloudBlobDirectory directory = (CloudBlobDirectory)blobItem;
        IEnumerable<IListBlobItem> blobs = directory.ListBlobs(true);
    }                
}
await ProcessBlobs(blobs);

我想使用 blobs此 foreach 循环之外的变量,但我收到此消息:blobs doesnot exist in the current context

我决定定义 blobs在 foreach 循环之外:

IEnumerable<IListBlobItem> blobs = new IEnumerable<IListBlobItem>;

foreach (IListBlobItem blobItem in container.ListBlobs())
{           
    if (blobItem is CloudBlobDirectory)
    {
        //Console.WriteLine(blobItem.Uri);
        CloudBlobDirectory directory = (CloudBlobDirectory)blobItem;
        IEnumerable<IListBlobItem> blobs = directory.ListBlobs(true);                    
    }
}

但我收到错误:can not create an instance of the abstract class or interface IEnumerable<IListBlobItem>

你知道我该如何解决这个问题吗?

最佳答案

您可以将 blob 声明为一个空集合,例如数组:

   // Empty
   IEnumerable<IListBlobItem> blobs = new IListBlobItem[0];

   foreach (IListBlobItem blobItem in container.ListBlobs())
   {
      if (blobItem is CloudBlobDirectory)
      {
          CloudBlobDirectory directory = (CloudBlobDirectory)blobItem;
          blobs = directory.ListBlobs(true);                    
      }            
   }

   // process either blobs from foreach or an empty collection
   await ProcessBlobs(blobs); 

关于c# - 在 foreach 循环之外使用 IEnumerable 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58708453/

相关文章:

c# - 在编译时不知道类型的情况下将 IEnumerable<A> 转换为 IEnumerable<B>

c# - html.hidden 未在 asp.net MVC 核心 Razor View 中设置值

c# - 如何提供一个接口(interface)来获取和更新key,value?

c# - 如何使用 C# 部署 Helm 3 图表

c# - 将 DataTable 转换为 IEnumerable<T>

c# - 如何根据字符串值通过 LINQ 查询列表的内容?

javascript - 如何获取两个字符串之间的变化(插入、删除或相同)?

javascript - Razor View 模型绑定(bind)使用javascript函数

wpf - 将IEnumerable <T>与ObservableCollection <T>包装在一起

c# - 将数据表转换为 ienumerable<anonymous>?