用c#设计一个水果篮子(FruitBasket),里面至多可装N个水果,水果种类≧2,且均派生自同一基类。使用接口IEnumerable和IEnumerator实现装入水果及遍历水果的过程
下面是使用C#设计一个水果篮子(FruitBasket)的代码示例,其中使用了接口IEnumerable和IEnumerator实现了水果的装入和遍历过程。
```csharp
using System;
using System.Collections;
using System.Collections.Generic;
// 定义水果的基类
public class Fruit {
public string Name { get; set; }
}
// 派生自水果基类的苹果类
public class Apple : Fruit {
public Apple() {
Name = "Apple";
}
}
// 派生自水果基类的香蕉类
public class Banana : Fruit {
public Banana() {
Name = "Banana";
}
}
// 水果篮子类
public class FruitBasket : IEnumerable<Fruit> {
private List<Fruit> fruits;
public FruitBasket() {
fruits = new List<Fruit>();
}
// 将水果加入篮子
public void AddFruit(Fruit fruit) {
fruits.Add(fruit);
}
// 实现IEnumerable接口的GetEnumerator方法
public IEnumerator<Fruit> GetEnumerator() {
foreach (var fruit in fruits) {
yield return fruit;
}
}
// 实现IEnumerable接口的GetEnumerator方法(非泛型版本)
IEnumerator IEnumerable.GetEnumerator() {
return GetEnumerator();
}
}
class Program {
static void Main(string[] args) {
// 创建水果篮子对象
FruitBasket basket = new FruitBasket();
// 向篮子中添加水果
basket.AddFruit(new Apple());
basket.AddFruit(new Banana());
// 使用foreach遍历篮子中的水果
foreach (var fruit in basket) {
Console.WriteLine(fruit.Name);
}
}
}
```
以上是一个简单的使用C#设计水果篮子的示例。其中,FruitBasket类实现了接口IEnumerable<T>,并通过实现GetEnumerator方法,使得该类的对象可以使用foreach语句进行遍历操作。在Main函数中,创建了一个水果篮子对象,并向篮子中添加了苹果和香蕉两种水果,然后使用foreach循环遍历篮子中的水果并输出它们的名称。
希望对你有帮助!如有更多问题,请随时提问。
AI智能问答网
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用创作工场,更聪明、更完整、更原创!