本人正刚开始学习C#
现在学习到委托和事件了,小弟有些不明白了请个位高手指点:
我觉得事件就是委托
只不过是有2个参数(object 和 eventargs)和void返回类型和 关键字event的 特殊的委托
例如下面这两个程序,一个是用委托做的,一个是用事件做的。他们完成同一个功能。而且代码几乎相同
我就不懂了 , 既然能使用委托来完成,干吗还要用事件来完成,他们有什么区别,是什么关系呢??????????
///////////////////////////////////////委托//////////////////////////////////////////////
using System;
namespace a
{
class UserInputMonitor
{
public delegate void UserRequest();
public UserInputMonitor.UserRequest OnUserRequest;
public void Run()
{ do
{
if (Console.ReadLine()=="h")
{
OnUserRequest();
}
}while(true);
}
}
public class Client
{
public static void Main()
{
UserInputMonitor monitor=new UserInputMonitor();
new Client(monitor);
monitor.Run();
}
private static void ShowMessage()
{
Console.WriteLine("委托"+" "+"HaHa!!");
}
Client(UserInputMonitor m) {
m.OnUserRequest = new UserInputMonitor.UserRequest(Client.ShowMessage);
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////事件///////////////////////////////////////////////////
using System;
namespace 事件
{
using System;
class UserInputMonitor
{
public delegate void UserRequest(object sender,EventArgs e); //定义委托
public event UserRequest OnUserRequest; //此委托类型类型的事件
public void Run()
{
do
{
if (Console.ReadLine()=="h")
{
Console.WriteLine("this is envent");
OnUserRequest(this,new EventArgs());
}
}while(true);
}
}
public class Client
{
public static void Main()
{
UserInputMonitor monitor=new UserInputMonitor();
new Client(monitor);
monitor.Run();
}
private void ShowMessage(object sender,EventArgs e)
{
Console.WriteLine("事件"+" "+"HaHa!!");
}
Client(UserInputMonitor m)
{
m.OnUserRequest+=new UserInputMonitor.UserRequest(this.ShowMessage);
}
}