导航网站制作,关键词优化搜索引擎,网络公司做网站的合同,搜索seo是什么意思在C#中#xff0c;委托#xff08;Delegate#xff09;和事件#xff08;Event#xff09;是两个重要的概念#xff0c;它们通常用于实现事件驱动编程和回调机制。 委托定义#xff1a; 委托是一个类#xff0c;它定义了方法的类型#xff0c;使得可以将方法当作另一个… 在C#中委托Delegate和事件Event是两个重要的概念它们通常用于实现事件驱动编程和回调机制。 委托定义 委托是一个类它定义了方法的类型使得可以将方法当作另一个方法的参数来进行传递这种将方法动态地赋给参数的做法可以避免在程序中大量使用If-Else(Switch)语句同时使得程序具有更好的可扩展性。 委托是一个安全的函数指针.NET中的委托是类型安全的委托会检测它所保存的函数引用是否和声明的委托匹配。 委托种类3种 Delegate至少0个参数至多32个参数可以无返回值也可以指定返回值类型 Func可以接受0个至16个传入参数必须具有返回值 Action可以接受0个至16个传入参数无返回值 代码示例 1.Delegate 类型
using System;// 定义委托
public delegate void MyDelegate(string message);// 使用委托
public class DelegateExample
{public void ShowMessage(string message){Console.WriteLine(Message: message);}public static void Main(){// 实例化委托并绑定方法MyDelegate myDelegate new MyDelegate(new DelegateExample().ShowMessage);// 调用委托myDelegate(Hello, World!);}
}
2. Func 泛型委托 Func 委托是一个带有返回值的泛型委托可以接受多个参数。
using System;public class FuncExample
{public static void Main(){// 使用Func委托Funcint, int, int add (a, b) a b;// 调用Func委托int result add(5, 10);Console.WriteLine(Result: result);}
}
3. Action 泛型委托 Action 委托是一个不带返回值的泛型委托也可以接受多个参数。
using System;public class ActionExample
{public static void Main(){// 使用Action委托Actionstring printMessage (message) Console.WriteLine(Message: message);// 调用Action委托printMessage(Hello, Action!);}
}
事件Event:
功能作用 事件是一种特殊的委托用于实现发布-订阅模式允许对象在特定的情况下通知其他对象。 主要用于实现回调函数、处理用户界面交互等。 // 定义事件委托
public delegate void MyEventHandler(object sender, EventArgs e);// 定义包含事件的类
public class MyEventClass
{public event MyEventHandler MyEvent;// 触发事件的方法public void RaiseEvent(){MyEvent?.Invoke(this, EventArgs.Empty);}
}// 订阅事件的方法
public class EventSubscriber
{public void HandleEvent(object sender, EventArgs e){Console.WriteLine(Event handled by EventSubscriber);}
}// 使用事件
MyEventClass myObject new MyEventClass();
EventSubscriber subscriber new EventSubscriber();// 订阅事件
myObject.MyEvent subscriber.HandleEvent;// 触发事件
myObject.RaiseEvent();
可以参考博主之前写的订阅器在项目中的使用 https://blog.csdn.net/zuiyuewentian/article/details/135043706
相同点 都基于委托 事件本质上是一种特殊的委托事件声明和使用都依赖于委托类型。都支持多播 委托和事件都支持多个方法的绑定可以同时调用多个方法。 不同点 语法和用途 委托用于直接调用方法或实现回调而事件更多用于实现发布-订阅模式让对象在状态改变时通知其他对象。封装性 事件具有更高的封装性外部类不能直接调用触发事件的方法而委托没有这种封装性。事件在类中声明委托可在任何地方声明和使用。