1.泛型委托,返回参数传T,参数传一个委托类型的参数TResult
class Program {public delegate int DelCompare<T>(T t1, T t2);static void Main(string[] args)
{ int[] nums = { 1, 2, 3, 4, 5 };
int max = GetMax<int>(nums, Compare1);
Console.WriteLine(max);
string[] names = { "abcdefg", "fdsfds", "fdsfdsfdsfdsfdsfdsfdsfsd" };
string max1 = GetMax<string>(names, (string s1, string s2) => {
return s1.Length - s2.Length; });
Console.WriteLine(max1);
Console.ReadKey(); }
public static T GetMax<T>(T[] nums, DelCompare<T> del) {
T max = nums[0];
for (int i = 0; i < nums.Length; i++) {
//要传一个比较的方法
if (del(max, nums[i]) < 0) {
max = nums[i]; } }
return max; }
public static int Compare1(int n1, int n2) { return n1 - n2; } }
2.总共3种委托形式delegate、Action、Func<TResult>已经定义好的泛型委托,窗体传值就使用委托,Action无返回值的委托HMGNV-WCYXV-X7G9W-YCX63-B98R2
3、多播委托
一个委托指向多个方法,执行委托类型的对象时,它指向的方法一起执行
public delegate void DelTest();
DelTest method=Test1;
method+=Test2;
method+=Test3;
method();//一起执行3个方法
public void Test1()
{
Console.Write("T1");
}
public void Test2()
{
Console.Write("T2");
public void Test3()
{
Console.Write("T3");