Func是带返回值的委托,比如Func<string,int,string,T> 最后一个就是你的返回值,前面的都是参数。
这里只讲基本的使用:
public static void Main(string[] args)
{
//实例化
func f = new func("张三");
//调用委托将Run1方法传进去,用一个委托去接收一个方法
var res= f.funcc(Run1);
Console.ReadKey();
}
public static string Run1(string Name)
{
return Name="小八";
}
public class func
{
//通过构造函数赋初始值
public func(string name)
{
Name = name;
}
public string Name { get; }
//创建一个Func内置委托的方法
public T funcc<T>(Func<string, T> func)
{
return func(Name);
}
}
可以看出来虽然我们传进去的是叫张三的姓名,但是在方法中我们改变了值,但是不会改变构造函数中的张三互不影响。最后返回小八。
Action是无返回值的委托,比如Action<string,int,string>
代码如下
public static void Main(string[] args)
{
//实例化
action action = new action();
//调用委托将Run2方法传进去,用一个委托去接收一个方法
action.acti(Run2);
Console.ReadKey();
}
public static void Run2(string Name,int age)
{
Console.WriteLine("我叫{0},今年{1}",Name,age);
}
public class action
{
//Action内置委托,没有返回值
public void acti(Action<string,int> action)
{
//给方法传入对应参数
action("小八", 18);
}
}
这里可以看出来我们用Action委托接收了一个无返回值的方法并且能将方法中的值打印出来
结果: 输出我叫小八,今年18