作为新手对委托的学习:
1.定义委托:委托实际上是一个类,,在定义委托前就知道了方法的返回类型和方法的参数类型(可以把委托理解为只知道方法的返回类型和方法的参数类型,不知道方法体)
public delegate string TestDelegate(string test);
2.实例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo
{
public delegate string TestDelegate(string name);//定义委托,委托实际上是一个类
//新建一个类来测试委托调用方法
public class Test
{
public void GreetPeople(string name, TestDelegate delegate1)
{
//if (delegate1 != null)//如果有方法注册委托变量
//{
// delegate1(name);//通过委托调用方法
//}
delegate1?.Invoke(name);//(与上面的if等价)
}
}
class Program
{
private static string TestMethod(string name)
{
Console.WriteLine("你好," + name);
return null;
}
static void Main(string[] args)
{
Test gm = new Test();
//使用委托调用TestMethod方法
gm.GreetPeople("panter", TestMethod);
Console.WriteLine();
//使用委托调用lambda
Console.Write("使用了lambda:");
gm.GreetPeople("潘特", lambdatest =>
{
Console.WriteLine("你好,"+lambdatest);
return null;
});
Console.ReadKey();
}
}
}
结果: