C# 委托的简单使用

使用委托可以有效地降低脚本之间的耦合度,同时也非常方便。

上代码

脚本1中定义了一个委托,写了在哪里调用这个委托。但是不知道这个委托要做什么,也不需要知道要做什么。在使用的地方传个参数就行了。

脚本2中定义这个委托要做什么,输出参数值,不知道委托在哪里调用,也不需要知道在哪里调用。

举个简单的例子。

一个课代表收作业,一堆学生交作业。

课代表即委托,学生为委托执行的方法。

课代表只负责收作业(即执行委托),学生交不交作业和课代表没有任何关系(执行几个方法和自身没关系)。

学生只负责交作业或者说忘带了(委托执行的方法),课代表什么时间收和学生没关系(只负责添加方法,不需知道什么地方执行),什么时间收就什么时间交。

时间: 2024-12-21 09:59:20

C# 委托的简单使用的相关文章

C#使用委托的简单步骤

委托可以理解为C或C++里面的函数指针,调用委托其实是调用被委托的方法. 简单的使用委托的步骤如下: 1.定义委托 // 定义委托使用关键字 delegate private delegate void SetProgressBarValueDelegate(int value); 2.声明委托 private SetProgressBarValueDelegate setProgressBarValue; 3.实例化委托 setProgressBarValue = new SetProgres

C#基础系列——委托实现简单设计模式

前言:上一篇介绍了下多线程的相关知识:C#基础系列--多线程的常见用法详解,里面就提到了委托变量.这篇简单介绍下委托的使用.当然啦,园子里面很多介绍委托的文章都会说道:委托和事件的概念就像一道坎,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里发慌.确实这东西就像最开始学C语言的指针一样,令人有一种很纠结的感觉,总觉得要调用一个方法直接调用就行了,为啥非要定义一个委托时执行这个方法呢.其实在C#里面很多的技术都是为了重用和简化代码而生,委托也不例外,很多使用C#多态去

委托事件简单实现

之前一直没有搞懂委托和事件的相关含义,而且网上的教程又比较抽象臃肿,我实在是一个脑袋比较笨又很懒的人,所以就这么不了了之到现在.最近碰到很多需要委托事件的实际需要,比如自定义用户控件.刚刚求同事指导一番,发现了一个比较好用的方法来实现需求,具体过程如下: 一.需求 现在我创建了一个自定义控件 TestUserControl,单击这个用户控件的时候,会返回这个用户控件对应的属性类 TestPropertyClass,在父窗体TestForm(即调用窗体)中拖拉了此用户控件,窗体本身有一个显示属性用

C#系列(2):其实委托很简单(下)

在上一篇博文中,我们知道了委托就是一种用来声明一个变量的数据类型,只不过委托声明的变量可以接受一个方法,只要方法签名保持一致就行了. 今天继续介绍委托. (一)委托的本质就是class: 为什么说委托的本质就是class呢?我们知道当我们用C#编写完源代码后都要对项目进行编译,我们运行的C#代码实际上都是编译后的代码,编译后的代码我们成为:微软中间代码. 那我们就新建一个项目,在项目中只添加一个class,然后编写我们的C#源代码,然后接着就编译项目.让VS帮我们生成微软中间代码. 所以我们来看

C#委托,简单粗暴理解

1. 委托个人的理解是 ,就是把方法作为参数传递给另一个方法,相当于中介,我要委托他做几件事情,首先定义一个中介,然后告诉他要做的事情 2. 委托的好处: 1.相当于用方法作为另一方法参数(类似于C的函数指针) 2.在两个不能直接调用的方法中作为桥梁,如:在多线程中的跨线程的方法调用就得用委托

异步委托的简单用例

1 //定义一个委托 2 static Func<int, int, string> delFunc = (a, b) => 3 { 4 Console.WriteLine("委托线程:" + Thread.CurrentThread.ManagedThreadId); 5 return (a + b).ToString(); 6 }; 7 8 static void Main(string[] args) 9 { 10 Console.WriteLine("

委托的简单例子

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { delegate double ProcessDelegate(double param1, double param2); static double Multiply(

C# 委托和事件(一):最简单的委托和事件

C#的事件基于委托,所以先说委托. 一切脱离实际场景的抽象概念新手看上去就像是在扯犊子,不错,我就是个新手.所以我需要一个实际的场景. 明天刚好考试(商务英语),考试上有两个角色(class):老师(Teacher)和学生(Student),在考试时间终止的时候,老师会触发(invoke)一个事件(event):"考试时间到了,我tm要收卷子了!"(OnTestTimeUp),而每个学生都要订阅这个事件,并在这个事件发生的时候上交试卷(HandInTestPaper).如果不用事件的话

C# 委托简单使用方法

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace C04委托的简单使用 { public delegate void SayHi(); class Program { static void TestDelegate(SayHi s) { s(); } static void Main(strin