返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#中的多播委托和泛型委托
  • 506
分享到

C#中的多播委托和泛型委托

2024-04-02 19:04:59 506人浏览 八月长安
摘要

多播委托 简介 每一个委托都是继承自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
    }

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

--结束END--

本文标题: C#中的多播委托和泛型委托

本文链接: https://www.lsjlt.com/news/147882.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#中的多播委托和泛型委托
    多播委托 简介 每一个委托都是继承自MulticastDelegate,也就是每个都是多播委托。带返回值的多播委托只返回最后一个方法的值多播委托可以用加减号来操作方法的增加或者减少。...
    99+
    2024-04-02
  • C#中的多播委托和泛型委托实例分析
    这篇“C#中的多播委托和泛型委托实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#中的多播委托和泛型委托实例分析”文...
    99+
    2023-06-30
  • C#内置泛型委托之Action委托
    1、什么是Action泛型委托 Action<T>是.NET Framework内置的泛型委托,可以使用Action<T>委托以参数形式传递方法,而不用显示声...
    99+
    2024-04-02
  • C#内置泛型委托之Func委托
    一、什么是Func委托 Func委托代表有返回类型的委托 二、Func委托定义 查看Func的定义: using System.Runtime.CompilerServices; ...
    99+
    2024-04-02
  • C#内置泛型委托中Action委托是什么
    小编给大家分享一下C#内置泛型委托中Action委托是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、什么是Action泛型委托Action<T>...
    99+
    2023-06-29
  • C#泛型委托是什么
    本篇内容主要讲解“C#泛型委托是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#泛型委托是什么”吧!C# 泛型委托学习之前首先来看看什么是C# 委托,C# 委托是一种引用方法的类型。一旦为...
    99+
    2023-06-17
  • C++用boost.signal实现多播委托
    boost.signal提供了一个多播委托机制,通过它可以非常容易的实现观察者模式: void print_sum(float x, float y) { ...
    99+
    2024-04-02
  • C#中的委托Delegate
    一、概述 委托为引用类型 二、使用 1、声明委托类型,定义委托 public delegate void HandlerDelegate(string message); 2、声明委...
    99+
    2024-04-02
  • C#中的委托和事件
    目录一、委托1、什么是委托1.1 定义委托1.2 声明并实例化委托1.3 委托实例的调用2、委托类型和委托实例2、多种途径实例化委托3、链式委托总结二、事件1、什么是事件2、如何声明...
    99+
    2024-04-02
  • C++怎么用boost.signal实现多播委托
    本篇内容主要讲解“C++怎么用boost.signal实现多播委托”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么用boost.signal实现多播委托”吧!boost.signal提供...
    99+
    2023-07-02
  • C#中的委托详解
    如果要给方法传递一个方法参数时,就可以使用委托。要传递方法,就必须把方法的细节封装在一钟新类型的对象中,即委托。委托是一种特殊类型的对象,其特殊之处在于,我们以前定义的所有对象都包含...
    99+
    2024-04-02
  • c#中委托是什么
    c# 中的委托是一种类型安全的指针,指向可以被调用的方法。其优点包括可调用性、代码重用和异步编程。委托的语法为 public delegate void delegatename(par...
    99+
    2024-04-04
    c#
  • C#中的委托是什么
    本篇内容主要讲解“C#中的委托是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#中的委托是什么”吧!目录C#之委托定义一个委托:定义回调方法:编写一个方法来触发回调函数:定义Counter...
    99+
    2023-06-20
  • C#中的委托和事件详解
    从大学就开始做C#这块,也做C#几年了,最近又从ios转回.Net,继续做C#,之前也没有写博客的习惯,写博客也是从我做ios的时候开始的,现在既然又做回了.net,那就写点关于.N...
    99+
    2024-04-02
  • C#异步委托之委托使用的时机有哪些
    这篇文章将为大家详细讲解有关C#异步委托之委托使用的时机有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在我的印象里,委托经常出现在三个场合(也许更多,我水平有限)。C#异步委托之委托使用的时机1、事...
    99+
    2023-06-18
  • C# MethodInvoker委托的使用
    MethodInvoker委托是C#中的一个预定义委托,用于引用无参数且无返回值的方法。它可以用于在不同的线程中调用方法。使用Met...
    99+
    2023-09-01
    C#
  • c#委托的常见用法
    C#委托是一种引用类型,可以用于封装方法并传递给其他方法,常见的用法有以下几种:1. 事件处理: 委托可以用于处理事件,当事件触发时,委托可以调用相应的方法来处理事件。例如,可以使用EventHandler委托来处理按钮的点击事件。2....
    99+
    2023-08-09
    C#
  • C# 多窗口委托通信的实现
    窗口之间通信无非有两个方向,主窗口发送数据到副窗口,副窗口发送数据到主窗口。 代码在最下面,先看一下解决的思路。 首先是简单的主窗口传数据到副窗口。 在副窗口创建一个函数,必须是pu...
    99+
    2024-04-02
  • C#中怎么使用委托和事件
    在 C# 中,委托和事件是一种常用的机制,用于实现事件驱动的编程模型。委托是一种类型,用于存储对方法的引用,而事件是委托的一种特殊用...
    99+
    2024-03-06
    C#
  • C#中的委托怎么声明和使用
    这篇“C#中的委托怎么声明和使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#中的委托怎么声明和使用”文章吧。如果要给方...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作