C# 使用 foreach 遍历类字典成员并获取特定类型
在 C# 中,可以实现 foreach 遍历一个类的字典成员并获得字典 value 的类型,需要将该类实现 IEnumerable 接口,并在 GetEnumerator() 方法中返回一个实现了 IEnumerator 接口的自定义迭代器类。具体实现如下:
首先,在该类中定义一个字典成员,如下所示:
public class MyClass
{
private Dictionary<string, MyObject> myDict = new Dictionary<string, MyObject>();
public MyClass()
{
// 添加一些字典元素
myDict.Add('key1', new MyObject());
myDict.Add('key2', new MyObject());
myDict.Add('key3', new MyObject());
}
// 实现 IEnumerable 接口
public IEnumerator<MyObject> GetEnumerator()
{
foreach (var item in myDict.Values)
{
yield return item;
}
}
}
在 GetEnumerator() 方法中,使用 yield return 关键字返回字典 value 的类型 MyObject。这将返回一个实现了 IEnumerator 接口的自定义迭代器类,并且该迭代器的 Current 属性将返回 MyObject 类型。
接下来,在代码中使用 foreach 遍历该类的实例,如下所示:
MyClass myClass = new MyClass();
foreach (MyObject obj in myClass)
{
// obj 为 MyObject 类型
// 处理字典中的每个元素
}
在 foreach 循环中,使用 MyObject 类型作为迭代变量的类型,而不是 object 类型。这将使您能够访问字典中存储的 MyObject 类型的元素。
原文地址: https://www.cveoy.top/t/topic/oDEQ 著作权归作者所有。请勿转载和采集!