📜  动作委托 c# (1)

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

动作委托

简介

在 C# 中,动作委托是指一种可用于指向没有参数并返回值为 void 的方法的委托类型。它能够让我们在运行时动态地指定要执行的方法,从而让我们的代码更加灵活可控。

语法

在 C# 中,动作委托的语法如下:

delegate void Action();
delegate void Action<in T>(T obj);
delegate void Action<in T1, in T2>(T1 arg1, T2 arg2);
//...

动作委托是泛型的,可以定义不同的输入参数和返回类型,具体根据需要在 <> 中添加泛型参数即可。例如,定义一个不带参数的动作委托,语法如下:

Action myAction = () => Console.WriteLine("Hello World");

此时 myAction 就可以用来调用一个没有参数并返回值为 void 的方法。

示例

动作委托的应用场景非常广泛。以下是一些示例代码:

示例一:使用动作委托实现异步编程
public static void RunAsync(Action action)
{
    // 创建新的线程
    Thread newThread = new Thread(() =>
    {
        // 执行动作委托
        action();
    });
    newThread.Start();
}

在上述代码中,我们可以传入一个动作委托作为参数,然后在新线程中执行它。

示例二:使用动作委托实现事件机制
public class EventDemo
{
    // 定义事件
    public event Action OnEvent;

    // 触发事件
    public void TriggerEvent()
    {
        OnEvent?.Invoke();
    }
}

在上述代码中,我们定义了一个事件 OnEvent,并使用动作委托作为事件处理程序。这使得我们可以方便地在事件发生时执行特定的操作。

总结

动作委托是 C# 中一种非常强大的功能,它可以让我们在运行时动态地指定要执行的方法。我们可以利用它来实现异步编程、事件机制以及其他很多有用的功能。