设计一个水果篮子(FruitBasket),里面至多可装N个水果,水果种类≧2,且均派生自同一基类。使用接口IEnumerable和IEnumerator实现装入水果及遍历水果的过程
根据您的需求,我可以帮您设计一个水果篮子(FruitBasket)类,该类可以装入不同种类的水果,并使用接口IEnumerable和IEnumerator实现遍历水果的功能。下面是一个示例代码:
```csharp
using System;
using System.Collections;
using System.Collections.Generic;
// 定义水果基类
public abstract class Fruit
{
public string Name { get; set; }
}
// 定义苹果类
public class Apple : Fruit
{
public Apple()
{
Name = "Apple";
}
}
// 定义梨子类
public class Pear : Fruit
{
public Pear()
{
Name = "Pear";
}
}
// 定义水果篮子类
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()
{
return fruits.GetEnumerator();
}
// 实现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 Pear());
// 遍历篮子中的水果
foreach (Fruit fruit in basket)
{
Console.WriteLine(fruit.Name);
}
}
}
```
在上述示例代码中,我们定义了一个抽象的水果基类(Fruit),并派生出苹果类(Apple)和梨子类(Pear)。然后,我们创建了一个水果篮子类(FruitBasket),该类使用List来存储水果,并实现了IEnumerable泛型接口。通过在篮子中添加水果和使用foreach循环遍历,可以实现对水果篮子中水果的装入和遍历过程。
请注意,示例代码中的AddFruit方法只允许添加继承自Fruit基类的水果对象,确保水果篮子里的水果种类均派生自同一基类。
AI智能问答网
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用创作工场,更聪明、更完整、更原创!