C#利用yield遍历Dictionary
时间: 2024-09-09 17:08:24 浏览: 52
alllist_C#源码_
在C#中,`yield`关键字用于生成器(Generator),可以让你像迭代集合那样逐个返回值,而不是一次性将所有值加载到内存中。如果你想遍历`Dictionary<TKey, TValue>`这样的数据结构,并按顺序获取键值对,你可以创建一个生成器方法,通过`yield return`语句逐个返回元素。
下面是一个简单的例子,展示如何使用`yield`遍历`Dictionary`:
```csharp
public IEnumerable<Tuple<TKey, TValue>> IterateDictionary(Dictionary<TKey, TValue> dictionary)
{
foreach (KeyValuePair<TKey, TValue> pair in dictionary)
{
yield return Tuple.Create(pair.Key, pair.Value);
}
}
// 使用时,你可以这样遍历并处理每个键值对
foreach (Tuple<TKey, TValue> keyValue in IterateDictionary(dictionary))
{
Console.WriteLine($"Key: {keyValue.Item1}, Value: {keyValue.Item2}");
}
```
在这个示例中,`IterateDictionary`方法返回一个生成器,它会按照字典的键值顺序逐个提供`KeyValuePair`。注意,这并不会改变原始`Dictionary`的数据结构,只是提供了一种访问它们的方式。
阅读全文