C#(委托)2
一、委托的声明
delegate返回值类型 委托名称(参数列表);
例如,
如果你想创建一个委托来引用一个返回int
类型并且接受两个int
参数的方法,可以这样声明:
delegate intMathOperation(int num1,int num2);
这里MathOperation就是委托类型的名称,它可以引用任何符合这个签名(返回int类型,有两个int参数)的方法。
二、委托的实例化和使用
实例化委托
一旦你声明了委托类型,就可以创建委托的实例。委托实例必须引用一个与委托签名匹配的方法。
例如,假设有以下方法:
int Add(int a, int b) { return a + b; }
你可以这样实例化委托:
MathOperation operation = new MathOperation(Add);
这里operation是MathOperation委托类型的一个实例,它引用了Add方法。
使用委托调用方法
一旦委托实例化完成,就可以通过委托实例来调用它所引用的方法。
例如,对于上面的operation
委托实例,可以这样调用:
int result = operation(3, 5);
这实际上会调用Add
方法,传入参数3
和5
,并将Add
方法的返回值赋给result
。
三、委托在事件处理中的应用(简单示例)
在 C# 的图形用户界面(GUI)编程中,事件处理是委托的一个重要应用场景。
例如,在Windows Forms应用程序中,当用户点击一个按钮时,会触发一个Click
事件。这个Click
事件实际上是通过委托来实现的。
假设你有一个简单的Windows Forms应用程序,有一个按钮button1
,你可以这样为按钮的Click
事件添加一个处理方法:
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Button Clicked!");
}
然后
在窗体的构造函数或者Load
事件中,将button1_Click
方法与按钮的Click
事件关联起来:
this.button1.Click += new EventHandler(button1_Click);
这里EventHandler
是一个预定义的委托类型,用于处理事件。当用户点击按钮时,就会调用button1_Click
方法,弹出一个消息框显示 “Button Clicked!”。
C#练习23