c# - 如何知道枚举器是否已到达 C# 中集合的末尾?

标签 c# c++ collections containers porting

我正在将库从 C++ 移植到 C#。旧库使用来自 C++ 的 vector ,而在 C# 中我使用通用字典,因为它们实际上是我正在做的事情的良好数据结构(每个元素都有一个 ID,然后我只使用 using TypeDictionary = Dictionary<String, Type>; )。现在,在 C# 代码中我使用了这样一个循环

TypeDictionary.Enumerator tdEnum = MyTypeDictionary.GetEnumerator();

while( tdEnum.MoveNext() ) 
{
   Type element = typeElement.Current.Value;

   // More code here
}

遍历集合中的元素。问题是,在特定情况下,我需要检查某个枚举器是否已到达集合的末尾,在 C++ 中,我会像这样进行检查:

if ( tdEnum == MyTypeDictionary.end() ) // More code here

但我只是不知道如何在 C# 中处理这种情况,有什么想法吗?

谢谢
托马索

最佳答案

这是实现此目的的一种非常简单的方法。

bool hasNext = tdEnum.MoveNext();
while (hasNext) {
    int i = tdEnum.Current;
    hasNext = tdEnum.MoveNext();
}

我找到了一个在线教程,它也可以帮助您了解其工作原理。

http://www.c-sharpcorner.com/UploadFile/prasadh/Enumerators11132005232321PM/Enumerators.aspx

关于c# - 如何知道枚举器是否已到达 C# 中集合的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2714129/

相关文章:

c++ - 哪些 IDE 和文本编辑器可以推断在 C++11 中使用 auto 关键字声明的变量类型

c++ - 任务 : OpenMP directive name required

c++ - 计算总 CPU 使用率

java - Java 中 ArrayList/Collections 方法的代码速度较慢

c# - c#中的64位应用程序中的32位dll

c# - OpenXML ASP.NET c# : tablecell vertical alignment issues

c# - 在 C# 中使用 CSVHelper 更改 CSV 文件中标题的名称

c# - 将 outerXml 转换为 OpenXmlElement

java - 为什么Map不扩展Collection接口(interface)

java - 比较一个数组列表中的差异对象