您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

摘要:第一种:直接调用,通过invoke方法; 第二种:这是第二种将委托作为方法的参数的间接调用; 下面举个栗子演示: using System; using System.Collections.Generic; namespace TestD
第一种:直接调用,通过invoke方法; 第二种:这是第二种将委托作为方法的参数的间接调用; 下面举个栗子演示: using System; using System.Collections.Generic; namespace TestDelegate { delegate int DeleInvoker(int[] vs); class Program { static void Main(string[] args){ DeleInvoker deleInvoker = null; deleInvoker += Methods.SumAndDisplay; int[] aa=new int[20]; for (int i = 0;i<aa.Length; i++){ aa[i] = i + 1; } Console.WriteLine("这是第一种绑定了委托后,直接调用"); //result= deleInvoker(aa);//直接调用委托 int a =(int)deleInvoker?.Invoke(aa);//判断委托是否为空,不为空则调用,《推荐》 testDelegateParm testDelegateParm = new testDelegateParm( ); Console.WriteLine("\r\n\r\n这是第二种将委托作为方法的参数的间接调用"); testDelegateParm.tDPFunc1( deleInvoker,aa); Console.ReadKey(); } } internal class Methods { public static int SumAndDisplay(int[] arrayX) { int sum = 0; string equation=null; foreach (var item in arrayX){ sum += item; if (equation==null){ equation = ($"{item}"); } else{ equation = ($"{equation}+{item}"); } Console.WriteLine($"{equation}={sum}"); } return sum; } } internal class testDelegateParm { public static void tDPFunc1( DeleInvoker deleInvoker,int[] a ) { int result=(int)deleInvoker?.Invoke(a); } } } 运行效果: