泛型委托和多播委托

来源:互联网 发布:全国最好的python 编辑:程序博客网 时间:2024/06/07 03:26

1.泛型委托,返回参数传T,参数传一个委托类型的参数TResult

class Program   {
public delegate int DelCompare<T>(T t1, T t2);
       static void Main(string[] args)    
  {           int[] nums = { 12345 };
           int max = GetMax<int>(numsCompare1);
          Console.WriteLine(max);           
string[] names = { "abcdefg""fdsfds""fdsfdsfdsfdsfdsfdsfdsfsd" };
           string max1 = GetMax<string>(names, (string s1string s2=>           {             
 return s1.Length - s2.Length;           });          
Console.WriteLine(max1);         
 Console.ReadKey();       }    
  public static T GetMax<T>(T[] numsDelCompare<T> del)       {  
        T max = nums[0];         
 for (int i = 0i < nums.Lengthi++)           {    
          //要传一个比较的方法             
if (del(maxnums[i]) < 0)               {  
                max = nums[i];               }           }    
      return max;       }     
  public static int Compare1(int n1int 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");

}


0 0