在C#中,委托与类,接口是同一级别的。
1, 委托:方法的模板。
定义:没有方法体的方法,即只有方法的声明。与抽象方法的声明相同,只需将abstract更改为delegate即可。
例:public delegate void SayHi (string name ) ;该例子定义了一个SayHi类型的委托(其实就是一个返回值为void,参数为string类型的方法的声明,只是多了个delegate 而已,我想是为了叫起来方便,所以管它叫委托。为什么非得叫这个名字,就得问C#的创造者了)。为了方便访问和重用,委托一般是放在命名空间下的。如果你想写在类的内部,随你高兴就好。
实例:与类的实例一样使用new关键字,不同的是委托只有带参的实例函数,在new的同时就需要传递参数。最大的不同是参数只能是方法名(在C#2.0中匿名方法也可以)。如:SayHi say = new SayHi(Hello);或SayHi say = new SayHi(delegate (string name){ Console.WriteLine(name+"说:hello!");});
public void Hello (string name)
{
Console.WriteLine(name+"说:hello!");
}
使用:委托实例名(参数),如 say (name); Hello方法和匿名方法的参数在使用实例委托时指定,name为string类型(我觉得完全多余,这句话)。到这里进入重点了,委托在
运算符:+,+=,=,-,-=(减等)可用于委托。比如说,
SayHi say = new SayHi(Hello);
say += new SayHi(delegate (string name){ Console.WriteLine(name+"说:hello!")};);
也可以这样:
SayHi say1 = new SayHi(Hello);
SayHi say2 = new SayHi(Hello1);( Hello1方法和Hello一样,我不想多打字了)。
SayHi say = say1 + say2;
也就是说委托可以引用多个实例,规则是方法的返回值必须为void才行,这个叫多播委托
另外,可以定义委托数组。SayHi[] sh = {new SayHi(Hello), new SayHi(Hello1)};通过数组下标访问sh[0]("liang")就是引用执行Hello方法了。这时结果为:liang说:hello!。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?