📅  最后修改于: 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# 中一种非常强大的功能,它可以让我们在运行时动态地指定要执行的方法。我们可以利用它来实现异步编程、事件机制以及其他很多有用的功能。