📜  C#委托(1)

📅  最后修改于: 2023-12-03 15:00:17.366000             🧑  作者: Mango

C# 委托

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 函数中,我们创建了一个名为 buttonMyButton 实例,并订阅了 Click 事件以调用 MethodA 方法。然后,我们调用 OnClick 方法,并传递一个字符串参数。

总结

以上就是 C# 委托的介绍。委托是 C# 中强大而重要的概念,因此它们在大多数 C# 代码中都得到了广泛使用。了解委托的工作原理以及如何使用它们,将帮助您编写更好、更健壮并具有可维护性的 C# 应用程序。