前言:C#编写的综合案例,演示了接口、类的继承、类的派生、枚举器(IEnumerable)、无参构造函数、单参构造函数和多参数构造函数,以及向基类返回参数的功能,同时添加委托和事件哈希表等案例并在主函数调用。
代码实现:
using System;
using System.Collections.Generic;
using System.Linq;
// 定义委托
public delegate void AnimalEventHandler(object source, EventArgs args);
// 定义事件哈希表
public static Dictionary<string, AnimalEventHandler> EventHandlers = new Dictionary<string, AnimalEventHandler>();
// 注册事件处理器
public static void RegisterEventHandler(string eventName, AnimalEventHandler handler)
{
EventHandlers.Add(eventName, handler);
}
// 触发事件
public static void TriggerEvent(string eventName)
{
if (EventHandlers.ContainsKey(eventName))
{
AnimalEventHandler handler = EventHandlers[eventName];
handler(this, EventArgs.Empty);
}
}
// 定义接口
public interface IAnimal
{
event AnimalEventHandler SpeakEvent;
}
// 定义基类
public class Animal : IAnimal
{
// 无参构造函数
public Animal() { }
// 单参构造函数
public Animal(string name) { Name = name; }
// 多参数构造函数
public Animal(string name, int age) { Name = name; Age = age; }
// 向基类返回参数
public string Name { get; set; }
public int Age { get; set; }
// 定义事件成员变量
public event AnimalEventHandler SpeakEvent;
// 实现接口中的方法(触发事件)
public void Speak()
{
if (SpeakEvent != null) SpeakEvent(this, EventArgs.Empty);
}
}
// 定义派生类
public class Dog : Animal
{
// 无参构造函数
public Dog() { }
// 单参构造函数
public Dog(string name) : base(name) { }
// 多参数构造函数
public Dog(string name, int age) : base(name, age) { }
}
// 定义另一个派生类
public class Cat : Animal
{
// 无参构造函数
public Cat() { }
// 单参构造函数
public Cat(string name) : base(name) { }
// 多参数构造函数
public Cat(string name, int age) : base(name, age) { } //主函数:创建动物,注册事件,触发事件等操作:下面是一个例子:假设我们要创建一个Animal集合,然后注册一个事件处理器来监听动物的叫声,并在听到叫声时输出一些信息。同时,我们还要创建一个Dog对象和一个Cat对象,并触发它们的叫声事件。代码如下: ```csharp public static void Main() { // 创建 Animal 对象集合 List<Animal> animals = new List<Animal>() { new Dog("Rex"), new Cat("Whiskers") }; // 注册事件处理器 foreach (Animal animal in animals) animal.SpeakEvent += Animal_Speak; // 触发事件 foreach (Animal animal in animals) animal.Speak(); // 无参构造函数 foreach (Animal animal in animals) Console.WriteLine($"Name: {animal.Name}, Age: {animal.Age}"); // 单参构造函数 foreach (Animal animal in animals) Console.WriteLine($"Name: {animal.Name}, Age: {animal.Age}"); // 多参数构造函数 Console.ReadLine(); } // 处理事件 void Animal_Speak(object source, EventArgs args) { Console.WriteLine($"I heard an animal say: {((Animal)source).Name} says:"); }```