C# 委托和事件的区别
时间: 2024-06-13 21:09:41 浏览: 16
C#中委托和事件的区别如下:
1. 委托是一种类型,它定义了方法的类型签名,可以用来声明变量、参数和返回值类型。而事件是一种特殊的委托,它只能在类内部使用,用于发布/订阅机制。
2. 委托可以直接调用,而事件只能通过+=和-=操作符来注册和注销。
3. 委托可以被继承和派生,而事件不能被继承和派生。
4. 委托可以作为参数传递给方法,而事件不能作为参数传递给方法。
以下是一个委托和事件的例子:
```csharp
using System;
delegate void MyDelegate(string message);
class MyClass
{
public event MyDelegate MyEvent;
public void RaiseEvent(string message)
{
MyEvent?.Invoke(message);
}
}
class Program
{
static void Main(string[] args)
{
MyClass myClass = new MyClass();
myClass.MyEvent += new MyDelegate(MyHandler);
myClass.RaiseEvent("Hello World!");
}
static void MyHandler(string message)
{
Console.WriteLine(message);
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)