定义闹钟类,学生类,闹钟有响铃事件,闹钟有时间和响铃时间,闹钟的时间每秒走一次,与响铃时间相同时发出响铃事件;随后定一个学生xm,在听到闹钟响后起床,并输出:我起床了。用C#实现以上功能。
时间: 2024-03-26 11:41:32 浏览: 48
好的,我来为您实现这个功能。
首先,我们来定义闹钟类:
```csharp
public class AlarmClock
{
public DateTime Time { get; set; } // 闹钟时间
public DateTime RingTime { get; set; } // 响铃时间
public event EventHandler Ring; // 响铃事件
private Timer timer; // 定时器
public AlarmClock(DateTime time, DateTime ringTime)
{
Time = time;
RingTime = ringTime;
timer = new Timer(1000); // 每秒触发一次
timer.Elapsed += Timer_Elapsed;
timer.Start();
}
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
if (DateTime.Now >= RingTime)
{
Ring?.Invoke(this, EventArgs.Empty);
timer.Stop();
}
}
}
```
接下来,我们来定义学生类:
```csharp
public class Student
{
public string Name { get; set; }
public Student(string name)
{
Name = name;
}
public void WakeUp(object sender, EventArgs e)
{
Console.WriteLine($"我是{Name},我起床了!");
}
}
```
最后,我们来测试一下:
```csharp
static void Main(string[] args)
{
var alarmClock = new AlarmClock(DateTime.Now, DateTime.Now.AddSeconds(5));
var student = new Student("xm");
alarmClock.Ring += student.WakeUp;
Console.ReadLine();
}
```
以上代码中,我们创建了一个闹钟实例,闹钟的时间为当前时间,响铃时间为当前时间加上5秒钟。然后创建了一个学生实例,将学生的 WakeUp 方法注册到闹钟的 Ring 事件中,当闹钟响铃时,学生就会起床并输出信息。
注意,以上代码为控制台程序,需要在 Main 方法中运行。
阅读全文