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

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

发布于 2023-10-18 16:04:27

下面是使用C#设计一个水果篮子(FruitBasket)的代码示例,其中使用了接口IEnumerable和IEnumerator实现了水果的装入和遍历过程。

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,并通过实现GetEnumerator方法,使得该类的对象可以使用foreach语句进行遍历操作。在Main函数中,创建了一个水果篮子对象,并向篮子中添加了苹果和香蕉两种水果,然后使用foreach循环遍历篮子中的水果并输出它们的名称。

希望对你有帮助!如有更多问题,请随时提问。

0 条评论

发布
问题

在线
客服