在C#中,委托和事件是两个核心概念,它们使得开发者能够实现基于事件的编程模型。委托允许将方法作为参数传递,而事件则是委托的封装,使得开发者可以订阅和触发这些委托。
一、委托的定义和用法
委托是一种特殊的类型,它代表了一个具有特定参数列表和返回类型的函数。这个函数可以由任何方法匹配。在C#中,可以使用delegate
关键字来定义委托。
下面是一个简单的委托示例:
csharp复制代码
public delegate int BinaryOp(int x, int y);
这个委托可以接受两个整数参数并返回一个整数。接下来,我们可以定义一个符合这个委托签名的方法:
csharp复制代码
public int Add(int x, int y)
{
return x + y;
}
现在,我们可以将这个方法赋值给委托变量:
csharp复制代码
BinaryOp binaryOp = Add;
最后,我们可以调用委托:
csharp复制代码
int result = binaryOp(10, 20); // result 的值为 30
二、事件:委托的封装
事件是对委托的封装,它允许外部类订阅和触发这个委托。在C#中,可以使用event
关键字来定义事件。
下面是一个简单的事件示例:
csharp复制代码
public class Button
{
public event EventHandler Click;
protected virtual void OnClick()
{
Click?.Invoke(this, EventArgs.Empty);
}
}
在这个例子中,我们定义了一个Click
事件,它使用了EventHandler
委托。当按钮被点击时,OnClick
方法会被调用,并触发Click
事件。外部类可以订阅这个事件:
csharp复制代码
Button button = new Button();
button.Click += (sender, e)服务器托管网 => { Co服务器托管网nsole.WriteLine("Button clicked!"); };
现在,当按钮被点击时,控制台会输出“Button clicked!”。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 阿里云 ACK 云上大规模 Kubernetes 集群高可靠性保障实战
01 引言 2023 年 7 月,阿里云容器服务 ACK 成为首批通过中国信通院服务器托管网“云服务稳定运行能力-容器集群稳定性”评估的产品, 并荣获“先进级”认证。随着 ACK 在生产环境中的采用率越来越高,稳定性保障已成为基本诉求。本文基于 ACK 稳定性…