Dictionary<TKey,TValue>.Enumerator 结构
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
枚举 Dictionary<TKey,TValue> 的元素。
public: value class Dictionary<TKey, TValue>::Enumerator : System::Collections::Generic::IEnumerator<System::Collections::Generic::KeyValuePair<TKey, TValue>>, System::Collections::IDictionaryEnumerator
public struct Dictionary<TKey,TValue>.Enumerator : System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<TKey,TValue>>, System.Collections.IDictionaryEnumerator
[System.Serializable]
public struct Dictionary<TKey,TValue>.Enumerator : System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<TKey,TValue>>, System.Collections.IDictionaryEnumerator
type Dictionary<'Key, 'Value>.Enumerator = struct
interface IEnumerator<KeyValuePair<'Key, 'Value>>
interface IEnumerator
interface IDisposable
interface IDictionaryEnumerator
[<System.Serializable>]
type Dictionary<'Key, 'Value>.Enumerator = struct
interface IEnumerator<KeyValuePair<'Key, 'Value>>
interface IDisposable
interface IDictionaryEnumerator
interface IEnumerator
[<System.Serializable>]
type Dictionary<'Key, 'Value>.Enumerator = struct
interface IEnumerator<KeyValuePair<'Key, 'Value>>
interface IDisposable
interface IEnumerator
interface IDictionaryEnumerator
type Dictionary<'Key, 'Value>.Enumerator = struct
interface IEnumerator<KeyValuePair<'Key, 'Value>>
interface IDictionaryEnumerator
interface IEnumerator
interface IDisposable
Public Structure Dictionary(Of TKey, TValue).Enumerator
Implements IDictionaryEnumerator, IEnumerator(Of KeyValuePair(Of TKey, TValue))
类型参数
- TKey
- TValue
- 继承
- 属性
- 实现
注解
foreach
C# 语言的语句 (for each
C++ 中的 For Each
Visual Basic) 隐藏枚举器的复杂性。 因此,建议使用 foreach
,而不是直接操作枚举数。
枚举器可用于读取集合中的数据,但不能用于修改基础集合。
最初,枚举数定位在集合中第一个元素的前面。 在此位置上,未定义 Current。 在读取 的值Current之前,必须调用 MoveNext 将枚举数推进到集合的第一个元素。
在调用 Current 之前,MoveNext 返回相同的对象。 MoveNext 将 Current 设置为下一个元素。
如果 MoveNext 传递集合的末尾,则枚举器位于集合中最后一个元素之后,并 MoveNext 返回 false
。 当枚举器位于此位置时,对 MoveNext 的后续调用也会返回 false
。 如果最后一次MoveNext调用返回 ,false
Current则为未定义。 无法再次将 Current 设置为集合的第一个元素;必须改为创建新的枚举器实例。
只要集合保持不变,枚举器就仍有效。 如果对集合进行了更改(例如添加元素或更改容量),枚举器将不可恢复地失效,并且对 或 IEnumerator.Reset 的下一次InvalidOperationException调用MoveNext将引发 。
仅限 .NET Core 3.0+ :唯一不会使枚举器 Remove 失效的可变方法是 和 Clear。
枚举数没有对集合的独占访问权;因此,从头到尾对一个集合进行枚举在本质上不是一个线程安全的过程。 若要确保枚举过程中的线程安全性,可以在整个枚举过程中锁定集合。 若要允许多个线程访问集合以进行读写操作,则必须实现自己的同步。
中 System.Collections.Generic 集合的默认实现不会同步。
属性
Current |
获取枚举数当前位置的元素。 |
方法
Dispose() |
释放由 Dictionary<TKey,TValue>.Enumerator 使用的所有资源。 |
MoveNext() |
使枚举数前进到 Dictionary<TKey,TValue> 的下一个元素。 |
显式接口实现
IDictionaryEnumerator.Entry |
获取枚举数当前位置的元素。 |
IDictionaryEnumerator.Key |
获取位于枚举数当前位置的元素的键。 |
IDictionaryEnumerator.Value |
获取位于枚举数当前位置的元素的值。 |
IEnumerator.Current |
获取枚举数当前位置的元素。 |
IEnumerator.Reset() |
将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。 |