c# Dictionary 遍历
时间: 2023-08-24 12:06:18 浏览: 117
在 C# 中,你可以使用 `foreach` 循环来遍历 `Dictionary`。以下是一个示例代码:
```csharp
Dictionary<string, int> dictionary = new Dictionary<string, int>();
dictionary.Add("apple", 1);
dictionary.Add("banana", 2);
dictionary.Add("orange", 3);
foreach (KeyValuePair<string, int> item in dictionary)
{
Console.WriteLine("Key: " + item.Key + ", Value: " + item.Value);
}
```
在上面的示例中,我们创建了一个 `Dictionary` 对象,并向其中添加了一些键值对。然后,使用 `foreach` 循环遍历字典中的每个键值对,并打印出键和对应的值。
请注意,`KeyValuePair<TKey, TValue>` 是一个结构体,用于表示字典中的键值对。你可以通过 `item.Key` 和 `item.Value` 分别访问键和值。
相关问题
C#Dictionary遍历
在C#中,`Dictionary<TKey, TValue>`是一种关联集合,它允许你在键值对的形式下存储数据。遍历`Dictionary`的主要方法有:
1. **foreach循环**:这是最常用的遍历方式,通过`.Keys`或`.Values`属性获取迭代器,可以同时遍历所有的键或值。
```csharp
foreach (KeyValuePair<TKey, TValue> item in dictionary)
{
Console.WriteLine($"Key: {item.Key}, Value: {item.Value}");
}
```
2. **For Loop with Indexers**:如果需要访问索引,你可以使用`for`循环结合`Item` indexer(数组形式)。
```csharp
for (int i = 0; i < dictionary.Count; i++)
{
Console.WriteLine($"Index {i}: Key: {dictionary[i].Key}, Value: {dictionary[i].Value}");
}
```
3. **LINQ查询**:如果你熟悉LINQ(Language Integrated Query),也可以使用`Select`或`Where`等方法。
```csharp
var keyValues = dictionary.Select(x => new { Key = x.Key, Value = x.Value });
foreach (var keyValue in keyValues)
{
Console.WriteLine($"Key: {keyValue.Key}, Value: {keyValue.Value}");
}
```
c# Dictionary反射遍历
可以使用反射来遍历C#中的Dictionary。下面是一个例子:
```csharp
using System;
using System.Collections.Generic;
using System.Reflection;
class Program
{
static void Main(string[] args)
{
Dictionary<string, int> dict = new Dictionary<string, int>();
dict.Add("one", 1);
dict.Add("two", 2);
dict.Add("three", 3);
Type dictionaryType = dict.GetType();
MethodInfo getEnumeratorMethod = dictionaryType.GetMethod("GetEnumerator");
IEnumerator<KeyValuePair<string, int>> enumerator = (IEnumerator<KeyValuePair<string, int>>)getEnumeratorMethod.Invoke(dict, null);
while (enumerator.MoveNext())
{
KeyValuePair<string, int> pair = enumerator.Current;
Console.WriteLine(pair.Key + ": " + pair.Value);
}
}
}
```
这里使用了`GetType()`方法获取字典的类型,然后使用`GetMethod()`方法获取`GetEnumerator()`方法的信息。接下来,使用`Invoke()`方法调用`GetEnumerator()`方法,并将其转换为`IEnumerator<KeyValuePair<string, int>>`类型。最后,使用`MoveNext()`方法遍历字典中的键值对,并输出它们的值。
阅读全文