什么是委托

      委托,顾名思义就是在你忙着做另一件事时候,你要去做另一件事,于是你可能就会委托别人帮你做,让别人把结果返回给你。编程时,委托也有这个思想。

我目前对委托的看法是,在编程中,委托其实是具有特定参数列表和返回类型的方法的抽象,相当于一个类,而那些方法就是它的实例对象。就相当于在编程时利用 委托这个类去实现方法,委托这个类就像是帮你做事的人,方法就是你要做的事。

什么时候使用委托

     1.封装静态方法。

2.调用方不需要访问实现该方法的对象的其他属性、方法或接口。

3.一个类可能需要多个方法的实现。

怎么使用委托

     1.先声明一个委托。委托可以在类的里面外面都可以。声明时它的返回类型和特定的参数列表应该和与这个委托关联的方法一致。

 2.编写与委托关联的方法。方法可以是静态方法,也可以是非静态方法。

3.编写委托方法。

4.委托实例化和调用

具体例子

马戏团表演,这一个类需要多个方法去实现。表演的内容是各个动物的问候,因此问候这一行为抽象成方法,将问候内容作为参数,无需返回值。

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace prctice
{
class Program
{
delegate void AnimalPlay(string name); //声明委托 static void DogPlay(string greetings) //与委托关联的方法
{
Console.WriteLine("{0},I am Snoopy!", greetings);
Console.WriteLine("gou");
} //与委托关联的方法
static void CatPlay(string greetings)
{
Console.WriteLine("{0},I am Kitty!", greetings);
Console.WriteLine("mao");
} //与委托关联的方法
static void LionPlay(string greetings)
{
Console.WriteLine("{0},I am Simba!", greetings);
Console.WriteLine("lion");
} //委托方法,将方法作为委托方法的参数,传入那个方法,就调用那个方法
static void CircusStart(AnimalPlay animalPlay, string name)
{
Console.WriteLine("女士们,先生们,我们的马戏表演开始了! ");
animalPlay(name);
} //在主函数中使用委托
static void Main(string[] args)
{
AnimalPlay deleDogPlay = new AnimalPlay(DogPlay); //实例化 CircusStart(deleDogPlay, "Good evening");//调用
}
}
}

C#委托基础学习的更多相关文章

  1. C#/.NET 基础学习

    初识C# C#是微软公司发布的面向对象的.运行于.NET Framework之上的高级程序设计语言.与Java有着明显不同,借鉴Delphi的特点,与COM(组件对象模型)直接集成,是微软公司 .NE ...

  2. C# 委托基础1.0

    在C# 1.0中提出了一种新特性叫作:委托.委托本质上一种类型.是对特定方法的抽象,定义委托后,可以将方法封装,把方法当参数,传递 using System; using System.Collect ...

  3. C#委托深入学习

    一基础学习: .Net delegate类型:委托跟回调函数是很有渊源的.回调其实跟通知机制有关,考虑这样一个基本的事件序列: a对象调用了b对象的某个方法,希望b对象在其方法完成之时调用a对象的某个 ...

  4. JavaScript 基础 学习 (四)

    JavaScript 基础 学习 (四) 解绑事件 dom级 事件解绑 ​ 元素.on事件类型 = null ​ 因为赋值的关系,所以给事件赋值为 null 的时候 ​ 事件触发的时候,就没有事件处理 ...

  5. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  6. 如何从零基础学习VR

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...

  7. IOS基础学习-2: UIButton

    IOS基础学习-2: UIButton   UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...

  8. HTML5零基础学习Web前端需要知道哪些?

    HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...

  9. python入门到精通[三]:基础学习(2)

    摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...

随机推荐

  1. 【Python3之基本数据类型,基本运算】

    一.基本数据类型 1.字符串 类:str 方法:选中str,按住command(ctrl)+左键跳转至对应的方法 创建 a = "hexin" a = str('hexin') 转 ...

  2. Docker Hub工作流程-Docker for Web Developers(6)

    在Github上创建项目仓库 和创建其他Github项目一样,在Github创建一个仓库,然后在仓库里面增加一个dockerfile,然后提交并推送到Github上. 我已经创建的仓库地址:https ...

  3. 关于MATLAB收集人工鼠标移动轨迹的坐标

    首先需要设计一个用户图形界面的函数,这个图形界面被用于在其上面绘制轨迹并记录当时的坐标. 该回响函数应包含:鼠标按下时,鼠标移动时,和鼠标释放时的反应命令.当然网上有有相关的开源 程序,但是有缺陷(该 ...

  4. Java数值避免浮点型计算丢失精度问题

    问题描述及方案 假设我们在做电商项目,在进行计算时这个丢失精度在产品价格计算就会出现问题,很有可能造成我们手里有9.99元然后后面会有一堆9,但是呢这些钱无法购买一个10元的商品. 在某些编程语言中有 ...

  5. 九度OJ:1002-Grading

    时间限制:1 秒内存限制:32 兆特殊判题:否提交:24102解决:6126 题目描述: Grading hundreds of thousands of Graduate Entrance Exam ...

  6. 将逗号分隔 的字符串转化成List

    将逗号分隔 的字符串转化成List List<String> parIdListTmp = new ArrayList<String>(); String parIdArray ...

  7. AngularJs + angular-ui-router + bootstrap 实现blog基础导航功能

    AngularJs + angular-ui-router + bootstrap 实现blog基础导航功能 核心代码如下 1.index.html <!DOCTYPE html> < ...

  8. iOS中UIWebView执行JS代码(UIWebView)

    iOS中UIWebView执行JS代码(UIWebView) 有时候iOS开发过程中使用 UIWebView 经常需要加载网页,但是网页中有很多明显的标记让人一眼就能看出来是加载的网页,而我们又不想被 ...

  9. 浅谈 Requests包

    浅谈 Requests包 一:Requests包是做什么的? 简单地说,是用python处理HTTP的一个包. 它的标志也非常有气质,是一个双蛇杖,按照官方的说法,一条蛇代表client,一条代表se ...

  10. JS运动框架的封装过程(一)

    给大家出一道题,从起点A走到目的地B,一共用了1000毫秒,每一次是30毫秒,请问你在这里面得到了哪些信息? 信息有哪些呢? 第一个,总时长是:1000毫秒 第二个,多久时间走一次?30毫秒 第三个, ...