C#委托和事件。
因为最近在学C#,还是坚持每天对昨天的学习做一个总结,昨天学的是委托和事件。以下是个人对委托和事件的理解,不当之处还请批评指正。
委托:就象我们日常生活中的代理吧,象委托同学买火车票一样,你(触发事件)要给同学身份证和钱(作为参数),同学才执行买这个动作(方法),返回的就是你的一张票(返回值)。委托因为它也是一个引用类型,所以要用到他的时候都要实例化它,一个是在没有事件的情况下,怎么运用委托。
public delegate void MyDelegate1();//说明方法中没有参数和返回值。
public delegate int MyDelegate2(int a,int b);//方法中带两个参数,返回值为int 类型。
static void Main(string[] args)
{
Program p=new Program();
MyDelegate1 de1=new MyDelegate1(p.Hello);//实例化一个委托对象,和方法产生关联。
de1();//调用
MyDelegate1 de=de1+new MyDelegate1(p.Say);//也可以相加
de();//先调用de1()的。
MyDelegate2 de2=new MyDelegate2(p.Sum);
Console.WriteLine(de2(23,56));//
}
Public void Say()
{
Console.WriteLine("Say Hi");
}
Public void Hello()
{
Console.WriteLine("Hello");
}
Public int Sum(int a,int b)
{
return a+b;
}
上面没有用到事件来触发,下面写一下事件的触发,怎么实现。
public delegate void Mydelegate1();//声明委托
public event Mydelegate1 MyEvent;//声明事件,并指定他的委托。
static void Main(string[] args)
{
Program p=new Program();
p.MyEvent = new Mydelegate1(p.Hello);
p.Raise();
}
Public void Raise()
{
if(MyEvent!=null)
{
MyEvent();
}
}
public void Hello()
{
Console.WriteLine("Hello");
}
//当看到winform里面
this.Load += new System.EventHandler(this.Form1_Load);这也是一个委托的实例。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库