C# 定义一个IEnumerable类型的变量
时间: 2023-08-11 19:07:56 浏览: 74
在 C# 中,定义一个 IEnumerable 类型的变量,需要先定义一个实现了 IEnumerable 接口的集合类,例如:
```csharp
class MyCollection : IEnumerable
{
private int[] numbers = { 1, 2, 3, 4, 5 };
public IEnumerator GetEnumerator()
{
return numbers.GetEnumerator();
}
}
```
在上面的代码中,我们定义了一个名为 MyCollection 的集合类,它实现了 IEnumerable 接口,并实现了 GetEnumerator() 方法,该方法返回一个实现了 IEnumerator 接口的对象。
然后,我们可以在代码中创建一个 MyCollection 类的实例,并将其赋值给一个 IEnumerable 类型的变量,例如:
```csharp
IEnumerable myEnumerable = new MyCollection();
```
这样,myEnumerable 变量就是一个 IEnumerable 类型的变量,可以通过 foreach 循环语句等方式来枚举它所持有的集合元素。
相关问题
如何定义一个IEnumerable
IEnumerable 是一个接口,用于表示可枚举的集合类型。这个接口定义了枚举集合元素的方法 GetEnumerator(),并且返回一个实现了 IEnumerator 接口的对象,该对象包含了 Current 属性和 MoveNext() 方法,通过这些方法可以遍历集合中的元素。IEnumerable 接口提供了一种通用的方式来访问集合中的元素,它可以被使用在各种不同类型的集合上,如数组、列表、字典等。通过实现 IEnumerable 接口,可以使集合类型支持 foreach 循环语句和 LINQ 查询等操作。
C# 定义一个迭代器函数
在C#中,可以使用迭代器函数来定义一个能够返回一个序列的方法。迭代器函数使用yield关键字来指示每次返回一个元素,并且在下一次调用时从上一次离开的地方继续执行。
下面是一个示例代码,展示了如何定义一个迭代器函数:
```csharp
using System;
using System.Collections;
public class MyIterator : IEnumerable
{
private int[] numbers;
public MyIterator(int[] numbers)
{
this.numbers = numbers;
}
public IEnumerator GetEnumerator()
{
for (int i = 0; i < numbers.Length; i++)
{
yield return numbers[i];
}
}
}
public class Program
{
public static void Main(string[] args)
{
int[] numbers = { 1, 2, 3, 4, 5 };
MyIterator iterator = new MyIterator(numbers);
foreach (int number in iterator)
{
Console.WriteLine(number);
}
}
}
```
在上面的示例中,我们定义了一个名为MyIterator的类,它实现了IEnumerable接口。该类包含一个整数数组和一个GetEnumerator方法。在GetEnumerator方法中,我们使用yield return语句来逐个返回数组中的元素。
在Main方法中,我们创建了一个MyIterator对象,并使用foreach循环来遍历迭代器函数返回的序列,并打印每个元素的值。