总结
如果说泛型是将类作为参数进行传递,那么委托就是将方法作为参数进行传递。
泛型委托则是将类型和方法同时作为参数进行传递。
示例
using Newtonsoft.Json;
namespace ConsoleApp1
{
internal class Program
{
delegate void NormalDelegate(string str);
delegate void GenericDelegate<T>(T args);
static void Main(string[] args)
{
Console.WriteLine("————————————普通委托————————————");
NormalDelegate normalDelegate;
normalDelegate = SayHi1;
normalDelegate("1111111");
normalDelegate = SayHi2;
normalDelegate("2222222");
Console.WriteLine("————————————泛型委托————————————");
GenericDelegate<(string, int)> myDelegate;
myDelegate = SayHi;
myDelegate(("sss", 111));
myDelegate = SayHiT;
myDelegate(("sss", 111));
GenericDelegate<(int, string)> myDelegate2;
myDelegate2 = SayHiT;
myDelegate2((222, "aaa"));
}
static void SayHi1(string msg)
{
Console.WriteLine("我是字符串1:" + msg);
}
static void SayHi2(string msg)
{
Console.WriteLine("我是字符串2:" + msg);
}
static void SayHiT<T>(T t)
{
Console.WriteLine("我是泛型类:" + JsonConvert.SerializeObject(t));
}
static void SayHi((string, int) t)
{
Console.WriteLine("我是元组:" + JsonConvert.SerializeObject(t));
}
}
}