【问题标题】:How can I count the number of elements in IEnumerator?如何计算 IEnumerator 中的元素数量?
【发布时间】:2019-09-07 15:17:21
【问题描述】:

我通过以下代码获取目录中的所有文件。

IEnumerator FILES = Directory.GetFiles(
                DIRECTORY_PATH).GetEnumerator();

如何获取文件总数?没有FILES.Count();

【问题讨论】:

  • int count = Directory.GetFiles(DIRECTORY_PATH).Length;?
  • Directory.GetFiles(..) 返回一个 string[] - 即一个数组。这有一个 .Length 属性。
  • 有什么理由需要来自 GetFiles(string) 方法的 Enumerator 吗?正如已经建议的那样, GetFiles(string).Length 就可以了。
  • 一般来说,如果你真的只有一个IEnumerator 实例,那么获取计数的方法是在计数时枚举:)

标签: c# .net winforms ienumerator


【解决方案1】:
Directory.GetFiles(@"C:\yourdir").Length

会直接给你数

【讨论】:

  • 已修复。习惯了 Linq,我忘记了返回类型
  • @GiladGreen 确实这里没有“需要”“System.Linq”。无论如何,由于数组是ICollection,因此LInQ Count() is optimized to 直接访问CountCount 属性ICollection;反过来returns the Length property of the array.
【解决方案2】:

首先你可以得到你的文件string[],计算其中的数字,然后得到你的枚举器:

string[] files = Directory.GetFiles(DIRECTORY_PATH);
int count = files.Length;
IEnumerator enumerator = files.GetEnumerator();

【讨论】:

    【解决方案3】:

    如果你真的想坚持使用“GetEnumerator()”...

    IEnumerator files = Directory.GetFiles(DIRECTORY_PATH).GetEnumerator();
    int count = 0;
    while (files.MoveNext())
    {
        count++;
    }
    
    // after this loop you will have total files count in count varibale.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 2014-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-08
      相关资源
      最近更新 更多