在c#中实现委托的方式有很多种,除了使用delegate关键字和Delegate对象定义委托以外,还可以使用 Action 和 Func泛型委托。 Action泛型委托表示引用一个 void返回类型的方法。这个委托类别有不同的重载实现,最多可以传递 16个参数。
Func泛型委托和Action泛型委托类似。但Func泛型委托与Action泛型委托的区别就是允许调用带返回值的方法,此外Func泛型委托定义了不同的重载实现,最多可以传输 16个参数和返回值。
接下来就让我们一起看看Action泛型委托和Func泛型委托的使用场景,首先来看看Action泛型委托示例代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// 定义无返回值委托
public Action<string> OnNoRet;
//定义有返回值委托
public Func<string, string> OnYesRet;
private void Form1_Load(object sender, EventArgs e)
{
//绑定委托
OnNoRet += NoRet;
OnYesRet += YesRet;
}
public void NoRet(string str)
{
Console.WriteLine($"仅输出文本{str},不返回值");
}
public string YesRet(string str)
{
return str + "带返回值方法";
}
}
}