• 智能AI问答!更聪明、更完整、原创作!
  • 一款基于GPT的超级AI机器人,可以回答问题、聊天、创作、写文案!

设计一个水果篮子(FruitBasket),里面至多可装N个水果,水果种类≧2,且均派生自同一基类。使用接口IEnumerable和IEnumerator实现装入水果及遍历水果的过程

发布于 2023-10-18 15:05:26

根据您的需求,我可以帮您设计一个水果篮子(FruitBasket)类,该类可以装入不同种类的水果,并使用接口IEnumerable和IEnumerator实现遍历水果的功能。下面是一个示例代码:

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基类的水果对象,确保水果篮子里的水果种类均派生自同一基类。

0 条评论

发布
问题

在线
客服