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

2026-03-31 08:471阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计636个文字,预计阅读时间需要3分钟。

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

多播委托+简介+每个委托都继承自MulticastDelegate,也是每个都是多播委托。带返回值的委托只返回最后一个方法的值。委托可以使用加减号来操作方法的增加或减少。给委托“

多播委托

简介

  • 每一个委托都是继承自MulticastDelegate,也就是每个都是多播委托。
  • 带返回值的多播委托只返回最后一个方法的值
  • 多播委托可以用加减号来操作方法的增加或者减少。
  • 给委托传递相同方法时 生成的委托实例也是相同的(也就是同一个委托)

代码实现

//声明委托 delegate void MulticastTest(); public class MulticastDelegateTest { public void Show() { MulticastTest multicastTest = new MulticastTest(MethodTest); multicastTest(); Action action =new Action(MethodTest); action = (Action)MulticastDelegate.Combine(action, new Action(MethodTest2)); action = (Action)MulticastDelegate.Combine(action, new Action(MethodTest3)); action = (Action)MulticastDelegate.Remove(action, new Action(MethodTest3)); action(); //等同于上面 action = MethodTest; action += MethodTest2; action += MethodTest3; action -= MethodTest3; foreach (Action action1 in action.GetInvocationList()) { action1(); } Console.WriteLine("=========="); action(); Func<string> func = () => { return "我是Lambda"; }; func += () => { return "我是func1"; }; func += () => { return "我是func2"; }; func += GetTest; func += GetTest; //给委托传递相同方法时 生成的委托实例也是相同的(也就是同一个委托) string result = func(); Console.WriteLine(result); Console.WriteLine("=========="); } #region 委托方法 public void MethodTest() { Console.WriteLine("我是方法MethodTest()1"); } public void MethodTest2() { Console.WriteLine("我是方法MethodTest()2"); } public void MethodTest3() { Console.WriteLine("我是方法MethodTest()3"); } public string GetTest() { return "我是方法GetTest()"; } #endregion }

泛型委托

//泛型委托声明 delegate void GenericDelegate<T>(T t); public class GenericDelegate { public static void InvokeDelegate() { GenericDelegate<string> genericDelegate = new GenericDelegate<string>(Method1); genericDelegate("我是泛型委托1"); //官方版本(不带返回值) Action<string> action = new Action<string>(Method1); action("我是泛型委托1"); //Action<string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string> GenericDelegate<int> genericDelegate1 = new GenericDelegate<int>(Method2); genericDelegate1(2); //官方版本(带回值) Func<string, string> func = new Func<string, string>(Method3); string ret = func("我是带返回值Func委托"); Console.WriteLine( ret ); //Func<string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string,string> } #region 委托方法 public static void Method1(string str) { Console.WriteLine(str); } public static void Method2(int num) { Console.WriteLine("我是泛型委托2 "+num); } public static string Method3(string str ) { return str; } #endregion }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

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

本文共计636个文字,预计阅读时间需要3分钟。

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

多播委托+简介+每个委托都继承自MulticastDelegate,也是每个都是多播委托。带返回值的委托只返回最后一个方法的值。委托可以使用加减号来操作方法的增加或减少。给委托“

多播委托

简介

  • 每一个委托都是继承自MulticastDelegate,也就是每个都是多播委托。
  • 带返回值的多播委托只返回最后一个方法的值
  • 多播委托可以用加减号来操作方法的增加或者减少。
  • 给委托传递相同方法时 生成的委托实例也是相同的(也就是同一个委托)

代码实现

//声明委托 delegate void MulticastTest(); public class MulticastDelegateTest { public void Show() { MulticastTest multicastTest = new MulticastTest(MethodTest); multicastTest(); Action action =new Action(MethodTest); action = (Action)MulticastDelegate.Combine(action, new Action(MethodTest2)); action = (Action)MulticastDelegate.Combine(action, new Action(MethodTest3)); action = (Action)MulticastDelegate.Remove(action, new Action(MethodTest3)); action(); //等同于上面 action = MethodTest; action += MethodTest2; action += MethodTest3; action -= MethodTest3; foreach (Action action1 in action.GetInvocationList()) { action1(); } Console.WriteLine("=========="); action(); Func<string> func = () => { return "我是Lambda"; }; func += () => { return "我是func1"; }; func += () => { return "我是func2"; }; func += GetTest; func += GetTest; //给委托传递相同方法时 生成的委托实例也是相同的(也就是同一个委托) string result = func(); Console.WriteLine(result); Console.WriteLine("=========="); } #region 委托方法 public void MethodTest() { Console.WriteLine("我是方法MethodTest()1"); } public void MethodTest2() { Console.WriteLine("我是方法MethodTest()2"); } public void MethodTest3() { Console.WriteLine("我是方法MethodTest()3"); } public string GetTest() { return "我是方法GetTest()"; } #endregion }

泛型委托

//泛型委托声明 delegate void GenericDelegate<T>(T t); public class GenericDelegate { public static void InvokeDelegate() { GenericDelegate<string> genericDelegate = new GenericDelegate<string>(Method1); genericDelegate("我是泛型委托1"); //官方版本(不带返回值) Action<string> action = new Action<string>(Method1); action("我是泛型委托1"); //Action<string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string> GenericDelegate<int> genericDelegate1 = new GenericDelegate<int>(Method2); genericDelegate1(2); //官方版本(带回值) Func<string, string> func = new Func<string, string>(Method3); string ret = func("我是带返回值Func委托"); Console.WriteLine( ret ); //Func<string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string,string> } #region 委托方法 public static void Method1(string str) { Console.WriteLine(str); } public static void Method2(int num) { Console.WriteLine("我是泛型委托2 "+num); } public static string Method3(string str ) { return str; } #endregion }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

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