C#中的GetEnumerator()方法用于获取集合中的枚举器。枚举器用于序列化访问集合中的元素。在C#中,每个实现ICollection或ICollection<>接口的类型都必须实现GetEnumerator()方法。这个方法返回一个实现IEnumerator或IEnumerator<>接口的对象,该对象可用于枚举集合中的元素。
以下是GetEnumerator()方法的标准语法:
public IEnumerator GetEnumerator();
说明:
- 方法名称: GetEnumerator
- 访问修饰符: public
- 返回类型: IEnumerator
以下是GetEnumerator()方法的用法:
首先定义一个集合类:
class MyCollection : ICollection
{
private int[] arr = new int[3];
public MyCollection()
{
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
}
//必须实现以下接口,这里只是演示了GetEnumerator()方法
public IEnumerator GetEnumerator()
{
return new MyEnumerator(this);
}
//实现ICollection接口中的其他方法
public void CopyTo(Array a, int index) { }
public int Count => throw new NotImplementedException();
public bool IsSynchronized => throw new NotImplementedException();
public object SyncRoot => throw new NotImplementedException();
private class MyEnumerator : IEnumerator
{
private MyCollection collection;
private int currentIndex = -1;
public MyEnumerator(MyCollection collection)
{
this.collection = collection;
}
public object Current => collection.arr[currentIndex];
public bool MoveNext()
{
currentIndex++;
return currentIndex < collection.arr.Length;
}
public void Reset()
{
currentIndex = -1;
}
}
}
在上面的示例中,我们创建了一个实现ICollection接口的类MyCollection。在该类中,我们实现了GetEnumerator()方法,并返回一个MyEnumerator对象的实例,该对象可以枚举集合中的元素。
现在,我们可以通过调用GetEnumerator()方法来获取一个枚举器,例如:
MyCollection myCollection = new MyCollection();
IEnumerator enumerator = myCollection.GetEnumerator();
while (enumerator.MoveNext())
{
Console.WriteLine(enumerator.Current);
}
在这个示例中,我们首先创建了一个MyCollection对象myCollection,然后获取一个枚举器enumerator。我们可以使用while循环来枚举枚举器中的元素并将它们打印出来。在这个示例中,输出的结果将是:
1
2
3
另一个示例:
class MyClass
{
public int[] MyData = new int[] { 10, 20, 30 };
public IEnumerator GetEnumerator()
{
return MyData.GetEnumerator();
}
}
在这个示例中,我们创建了一个名为MyClass的类,并在该类中定义了一个名为MyData的int类型数组。接下来,我们实现了GetEnumerator()方法并返回了数组的枚举器。现在,我们可以使用以下代码来枚举该数组的元素:
MyClass myClass = new MyClass();
IEnumerator enumerator = myClass.GetEnumerator();
while (enumerator.MoveNext())
{
Console.WriteLine(enumerator.Current);
}
在这个示例中,我们首先创建了一个MyClass对象myClass,然后获取一个枚举器enumerator。我们可以使用while循环来枚举枚举器中的元素并将它们打印出来。在这个示例中,输出的结果将是:
10
20
30
总之,GetEnumerator()方法是一个很有用的方法,它使我们能够序列化访问集合中的元素,并且对于实现了ICollection接口的类型,我们必须实现此方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# GetEnumerator():返回集合的枚举器,用于遍历集合中的元素 - Python技术站