通俗的理解委托

一:什么是委托呢

我们来看看委托的定义

C#中的委托(Delegate) 类似于C或C++中函数的指针。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。

对于不熟悉的人来说,看着这个就是一脸懵逼,我当初就是这样,一个泛泛的概念很难让人理解和记住,我们先不讲概念,直接看代码理解

二:怎么使用委托

Step1:定义委托

//delegate 定义委托
public delegate void MyDelegate(string name);

Step2:实例化委托

我们进行委托的实例化有三种方式进行 ,分别是常规声明,匿名函数声明,lambda表达式声明

  //定义传入委托的方  //我们定义的方法要与我们定义的委托有相同的返回值类型和参数列表
        public static void Function(string name)
        {
            Console.WriteLine($"{name}是传入委托的Name");
        }

static void Main(string[] args)
  {

//常规声明委托

            MyDelegate myDelegate = Function;
            myDelegate("悟空");
            //匿名函数声明
            MyDelegate myDelegate2 = delegate (string name)
            {
                Console.WriteLine($"{name}是传入委托的Name");
            };
            myDelegate2("八戒");
            //lambda优美的声明
            MyDelegate myDelegate3 = x => Console.WriteLine($"{x}是传入委托的Name");
            myDelegate3("沙僧");}

执行结果:

经过上面的代码我们知道委托定义和声明,可以说是将方法当成一个参数传入给另外一个方法,也可以将委托当做成一个命令,委托里面的参数就是要执行这命令的具体动作

委托顾名思义就是将一个动作交给另外一方去完成   举个例子,假如小三肚子饿了,让小二给他去买吃的,然后小二给他定了一个外卖

我们将其拆解一下

小三肚子饿了  我们可以看做成一个委托的定义

然后小三给小二一个吩咐说自己饿了,给自己定个外卖 ,吩咐下命令的过程可以看作是委托的实例化

而小二接到吩咐后就跑去订外卖的这个动作就是我们上面给委托赋值那个方法

MyDelegate myDelegate = Function
水平有限,可能我举的例子不太对,大家海涵,个人理解就是这么个意思,我觉得举示例是最实在的
委托后面还有多播,事件和委托,Action,Func后面一一出文喜欢的关注呦

原文地址:https://www.cnblogs.com/wshnzxj/p/12629239.html

时间: 2024-10-27 11:47:23

通俗的理解委托的相关文章

通俗的理解委托(二)

在通俗理解委托(一)中,我们讲到了委托的定义,声明和使用,接下继续讲Action Func,多播委托 一:Action,Fun 这两个方法都是微软给我们封装好了的 Action Action是无返回值的泛型委托. Action 表示无参,无返回值的委托 Action<int,string> 表示有传入参数int,string无返回值的委托 Action<int,string,bool> 表示有传入参数int,string,bool无返回值的委托 Action<int,int,

编写高质量代码改善C#程序的157个建议——建议44:理解委托中的协变

建议44:理解委托中的协变 委托中的泛型变量天然是部分支持协变的.为什么是“部分支持协变”?看下面示例: class Program { public delegate T GetEmployeeHanlder<T>(string name); static void Main() { GetEmployeeHanlder<Employee> getAEmployee = GetAManager; Employee e = getAEmployee("Mike"

java数据结构与算法之递归思维(让我们更通俗地理解递归)

[版权申明]转载请注明出处(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53452971 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) java数据结构与算法之栈(Stack)设计与实现 j

理解委托(delegate)及为什么要使用委托

理解委托(delegate)及为什么要使用委托 委托:是一种定义方法签名的类型. 当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联. 您可以通过委托实例调用方法. 上述为官方说法,理解起来比较难,举个生活中的例子: 某人有三子,让他们各自带一样东西出门,并带回一头猎物.上面一句话可以理解为父亲对儿子的委托:猎物 办法(工具 某工具)-->delegate 猎物(返回值) 带回猎物(委托名)(工具(参数类型) x)-->delegate int GetValue(int i)三个人执

没有代码也让你理解委托的作用

假如我们现在有个机器人,它有一个功能或者叫作方法,叫做dosomething(),然后我们在里面写实现代码,例如快过年了,就写拜年的方法 ,OK,然后过年的时候它就会向大家拜年了,现在到这里还是很正常的,但是新年过去了之后呢?拜年这个方法也就不用使用了, 这个时候我们就需要机器人干其他事情了,不可能买一个机器人就只是为了拜年吧?我现在想要机器人扫地,所以我们就需要修改 dosomething这个方法了,那怎么修改了,我想应该是修改代码之后再植入到机器人的芯片吧!但是这样的操作方法是违反了开封 闭

C#学习之初步理解委托、事件、匿名方法和Lambda

最经在学习LinqtoSql,然后扯到Lambda表达式,然后扯到匿名方法,然后扯到委托,最后扯到事件处理...后来发现对委托这个概念和事件处理这个过程理解得不是很清晰,遂得一下学习笔记.那里说得不对,请大家多多指教! 第一部分:理解委托 委托委托,顾名思义,就是类似于中间人的意思,有些事情你不做,委托别人去做,比如你想相亲,但你不想去主动约女孩子,那你可以交给媒婆去帮你约. 如果你学过C++,请把委托理解成函数指针,都是为了调用函数.函数指针可以调用符合该函数指针要求的函数.什么叫符合该函数指

使用委托中介租房理解委托与事件

委托和事件,.Net Framework中的应用非常广泛,然而,较好的理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像一道门槛儿,跨过去的,觉得太容易了,而没有过去的人每次见到委托事件就觉得心慌慌,浑身不自在. 我个人还是比较喜欢用面向对象的编程思想去理解逻辑程序,理解编程.下面就用委托中介公司租房子的示例理解使用委托流程: 1.定义委托和委托对象——租房人想要租房,但是没有房源,于是委托中介找房子:2.编写要委托的方法——租房中介有房源,可以找到房子:3.将要委托的方法传递给委托

[转] 把委托说透(2):深入理解委托

在上一篇随笔中我们通过示例逐步引入了委托,并比较了委托和接口.本文将重点剖析委托的实质. 委托在本质上仍然是一个类,我们用 delegate 关键字声明的所有委托都继承自System.MulticastDelegate.后者又是继承自System.Delegate类,System.Delegate类则继承自System.Object.委托既然是一个类,那么它就可以被定义在任何地方,即可以定义在类的内部,也可以定义在类的外部. 正如很多资料上所说的,委托是一种类型安全的函数回调机制, 它不仅能够调

C#委托的定义 以及使用方式详解,更简单的理解委托。

委托的声明及定义: 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性.“ 这是百度上和许多教科书上都有的一个概念,但是初学这门编程语言的话,或者基础比较差的童鞋,看到这句话,肯定是一脸懵比,先不用着急,我们来慢慢通过代码去理解委托这个概念. 下面就在C#控制台上看代码把 相信刚学C#的朋友们应该很熟悉 using System;using Sy