iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#中的委托怎么定义和应用
  • 589
分享到

C#中的委托怎么定义和应用

2023-06-30 12:06:29 589人浏览 泡泡鱼
摘要

今天小编给大家分享一下C#中的委托怎么定义和应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、概述委托为引用类型二、使用

今天小编给大家分享一下C#中的委托怎么定义和应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、概述

委托为引用类型

二、使用

1、声明委托类型,定义委托

public delegate void HandlerDelegate(string message);

2、声明委托变量

HandlerDelegate myDelegate;//声明委托变量

3、实例化委托,带函数引用

传统方式

//myDelegate = new HandlerDelegate(Method1);//可以为静态方法或者实例方法。//或者直接myDelegate = Method1;

方法定义:

public void Method1(string mgs){    Console.WriteLine(mgs);}

或匿名方法方式:

myDelegate = delegate (string message)//实例化委托(带函数引用){    Console.WriteLine(message);};

或lambda表达式方式:

myDelegate = (message) => { Console.WriteLine(message); };

4、调用委托

myDelegate("Hello World");//同步调用

三、高级用法

1、多播委托

public delegate void HandlerDelegate(string message);void Main(){    HandlerDelegate myDelegate;//声明委托变量    myDelegate = (message) => { Console.WriteLine("a " + message); };    myDelegate += (message) => { Console.WriteLine("b " + message); };    myDelegate += (message) => { Console.WriteLine("c " + message); };    myDelegate("Hello World");//多个方法依次调用    Console.WriteLine(myDelegate.GetInvocationList().GetLength(0));//3}

2、作为方法的参数传递委托实例

public delegate void HandlerDelegate(string message);//客户端void Main(){    HandlerDelegate myDelegate;//声明委托变量    myDelegate = (message) =>    {        Console.WriteLine("计算结果为:" + message);    };    MyClass myClass = new MyClass();    myClass.MethodWithCallback(2, myDelegate);}//作为服务端,计算完成后,将结果返回给客户端public class MyClass{    public void MethodWithCallback(int a, HandlerDelegate callback)    {        a = a + 1;        callback("result:" + a.ToString());//执行委托    }}

四、同步、异步调用

1、委托的同步调用

委托的Invoke方法用来同步调用,它将阻塞当前线程,然后执行调用线程,调用完毕后再继续主线程向下执行。

public delegate int AddHandler(int a, int b);void Main(){    AddHandler handler = (a, b) =>    {        return (a + b);    };    //int result = handler(2, 3);    int result = handler.Invoke(2, 3);//此句调用的方法执行完毕后才执行往下的语句。    Console.Write(result);//5}

2、委托的异步调用

把调用放入线程池中,程序主体线程或UI线程可同时执行。

public delegate int AddHandler(int a, int b);void Main(){    AddHandler handler = (a, b) =>    {        return (a + b);    };    IAsyncResult ar = handler.BeginInvoke(2, 3, null, null);    //while (!ar.IsCompleted)    //{    //     Console.WriteLine("Do Sth.");//在委托的工作未完成之前,主线程可做其他事情。    //}    //或    while (!ar.AsyncWaitHandle.WaitOne(0, false))    {        Console.WriteLine("Do Sth.");    }    int result = handler.EndInvoke(ar);    Console.Write(result);//5}

3、委托的异步回调

public delegate int AddHandler(int a, int b);void Main(){    AddHandler handler = (a, b) =>    {        return (a + b);    };    IAsyncResult ar = handler.BeginInvoke(2, 3, new AsyncCallback(AddComplete), null);    Console.WriteLine("Do Sth.");//异步调用完成时调用此方法。}public void AddComplete(IAsyncResult ar){    AddHandler handler = ((AsyncResult)ar).AsyncDelegate as AddHandler;    Console.WriteLine(handler.EndInvoke(ar));}

以上就是“C#中的委托怎么定义和应用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: C#中的委托怎么定义和应用

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#中的委托怎么定义和应用
    今天小编给大家分享一下C#中的委托怎么定义和应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、概述委托为引用类型二、使用...
    99+
    2023-06-30
  • Linq委托怎么定义
    这篇文章主要讲解了“Linq委托怎么定义”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linq委托怎么定义”吧!委托的定义:delegate string Process...
    99+
    2023-06-17
  • C#中的多播委托和泛型委托
    多播委托 简介 每一个委托都是继承自MulticastDelegate,也就是每个都是多播委托。带返回值的多播委托只返回最后一个方法的值多播委托可以用加减号来操作方法的增加或者减少。...
    99+
    2024-04-02
  • C#---事件委托EventHandler的定义与使用
    在C#中,事件委托是一种特殊的委托类型,用于定义事件的回调函数。它是一种封装了方法的类型,用于在事件发生时通知其他对象进行响应。事件...
    99+
    2023-09-08
    C#
  • C#中怎么使用委托和事件
    在 C# 中,委托和事件是一种常用的机制,用于实现事件驱动的编程模型。委托是一种类型,用于存储对方法的引用,而事件是委托的一种特殊用...
    99+
    2024-03-06
    C#
  • C#中的委托怎么声明和使用
    这篇“C#中的委托怎么声明和使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#中的委托怎么声明和使用”文章吧。如果要给方...
    99+
    2023-06-30
  • C#委托怎么使用
    这篇文章主要介绍了C#委托怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#委托怎么使用文章都会有所收获,下面我们一起来看看吧。1、什么是委托从数据结构来讲,委托是和类一样是一种用户自定义类型。委托是方...
    99+
    2023-06-29
  • C#中的委托和事件
    目录一、委托1、什么是委托1.1 定义委托1.2 声明并实例化委托1.3 委托实例的调用2、委托类型和委托实例2、多种途径实例化委托3、链式委托总结二、事件1、什么是事件2、如何声明...
    99+
    2024-04-02
  • C#中的多播委托和泛型委托实例分析
    这篇“C#中的多播委托和泛型委托实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#中的多播委托和泛型委托实例分析”文...
    99+
    2023-06-30
  • Qt数据库应用之超级自定义委托
    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码一、前言 在QTableView、QTreeView以及对于衍生的QTableWidget、QTreeWidget类中,需要...
    99+
    2024-04-02
  • C#中的委托是什么
    本篇内容主要讲解“C#中的委托是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#中的委托是什么”吧!目录C#之委托定义一个委托:定义回调方法:编写一个方法来触发回调函数:定义Counter...
    99+
    2023-06-20
  • C#怎么将方法绑定到委托
    这篇文章主要讲解了“C#怎么将方法绑定到委托”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么将方法绑定到委托”吧!你是不是在想:我不一定要直接在GreetPeople()方法中给 na...
    99+
    2023-06-17
  • C#中的委托和事件详解
    从大学就开始做C#这块,也做C#几年了,最近又从ios转回.Net,继续做C#,之前也没有写博客的习惯,写博客也是从我做ios的时候开始的,现在既然又做回了.net,那就写点关于.N...
    99+
    2024-04-02
  • C#委托和事件怎么理解
    这篇文章主要介绍“C#委托和事件怎么理解”,在日常操作中,相信很多人在C#委托和事件怎么理解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#委托和事件怎么理解”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-17
  • C#的Func委托怎么实现
    本篇内容介绍了“C#的Func委托怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、什么是Func委托Func委托代表有返回类型的委...
    99+
    2023-06-29
  • C#中事件和委托的区别是什么
    事件是一种特殊的委托,委托是一种类型安全的函数指针,而事件是委托的一种封装,它只能在其所在的类中被触发和订阅。 委托可以被任何类访问...
    99+
    2024-04-03
    C#
  • C#方法中的反射方式和委托方式怎么用
    这篇文章主要介绍C#方法中的反射方式和委托方式怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在开发过程中对静态方法的调用是通过类型名后面加个点而后是调用方法的名称,对类型实例方法的调用是通过new一个对象,而后...
    99+
    2023-06-17
  • C#中的委托和事件实例分析
    本文小编为大家详细介绍“C#中的委托和事件实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#中的委托和事件实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、定义委托delegate v...
    99+
    2023-06-30
  • C#中怎么利用委托实现异步调用
    这篇文章将为大家详细讲解有关C#中怎么利用委托实现异步调用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。委托实现C#异步调用的步骤:定义委托。将要进行异步调用的方法“实例化”到定义的委托。在...
    99+
    2023-06-17
  • C++怎么用boost.signal实现多播委托
    本篇内容主要讲解“C++怎么用boost.signal实现多播委托”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么用boost.signal实现多播委托”吧!boost.signal提供...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作