C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。理解为指向函数的指针即可,它的本质上是指针。demo示例如下:
using System.Windows;
namespace 委托Demo
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private delegate int MyDelegate(int a, int b); //有返回值的委托
private delegate void MyDelegate2(string AText); //无返回值委托
public MainWindow()
{
InitializeComponent();
}
private void BtnTest_Click(object sender, RoutedEventArgs e)
{
//MyDelegate myDelegate = new(Compare);
//MessageBox.Show(myDelegate(1, 3).ToString());
MyDelegate2 myDelegate2 = new(test);
myDelegate2 += test2; //一个委托,可以指向多个方法,委托调用的时候,
//将会依次调用//指向的多发方法
myDelegate2("Hello"); //委托加上对应的参数,可以当做方法使用,直接调用
}
private int Compare(int a,int b)
{
int iResult = 0;
if (a > b)
{
iResult = 1;
} else if (a < b)
{
iResult = -1;
}
return iResult;
}
private void test(string sText)
{
MessageBox.Show("test:"+ sText);
}
private void test2(string sText)
{
MessageBox.Show("test2:" + sText);
}
}
}