📅  最后修改于: 2023-12-03 15:00:17.366000             🧑  作者: Mango
C# 委托是一种引用方法的数据类型,与 C 语言中的函数指针类似。它允许您传递方法作为参数,将方法存储在变量中,然后在需要时调用该方法。C# 委托可用于创建事件处理程序,LINQ 查询以及可以使用您自己的方法的多线程代码。
要定义委托,您需要使用 delegate
关键字。以下是一个定义委托的示例:
delegate void MyDelegate(string message);
上述代码定义了一个名为 MyDelegate
的委托,它接受一个名为 message
的字符串参数,并且返回 void
。
要声明委托实例,您可以使用像声明变量一样的语法:
MyDelegate myDelegate = new MyDelegate(MethodA);
上述代码声明了一个委托实例 myDelegate
,它引用了名为 MethodA
的方法。
要调用委托,只需使用委托实例即可,就像调用任何其他方法一样:
myDelegate("Hello World!");
上述代码调用了 myDelegate
委托所引用的方法,并传递了一个字符串参数。
在 C# 中,事件是基于委托的。当您定义一个事件时,您实际上是定义了一个委托类型,用于保存事件处理程序的引用。以下是一个声明事件并订阅事件的示例:
public class MyButton
{
public event MyDelegate Click;
public void OnClick(string message)
{
if (Click != null)
{
Click(message);
}
}
}
// ...
MyButton button = new MyButton();
button.Click += MethodA;
button.OnClick("Hello World!");
在上面的示例中,我们定义了一个名为 MyButton
的类,并声明了一个名为 Click
的事件,它是一个 MyDelegate
委托类型。我们还定义了一个名为 OnClick
的方法,当该方法被调用时,它将调用 Click
委托,并传递一个字符串参数。
在 Main
函数中,我们创建了一个名为 button
的 MyButton
实例,并订阅了 Click
事件以调用 MethodA
方法。然后,我们调用 OnClick
方法,并传递一个字符串参数。
以上就是 C# 委托的介绍。委托是 C# 中强大而重要的概念,因此它们在大多数 C# 代码中都得到了广泛使用。了解委托的工作原理以及如何使用它们,将帮助您编写更好、更健壮并具有可维护性的 C# 应用程序。