什么是委托

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

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

什么时候使用委托

     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. [POJ 2115} C Looooops 题解(扩展欧几里德)

    题目描述 对于C的for(i=A ; i!=B ;i +=C)循环语句,给出A,B,C和k(k表示变量是在k进制下的无符号整数),判断循环次数,不能终止输出"FOREVER". 输 ...

  2. java中计算两个时间差

    java计算时间差及比较时间大小 比如:现在是2004-03-26 13:31:40 过去是:2004-01-02 11:30:24 我现在要获得两个日期差,差的形式为:XX天XX小时XX分XX秒 方 ...

  3. Spring+TaskExecutor实例

    1 taskExcutor package com.test; import org.springframework.core.task.TaskExecutor; public class Main ...

  4. HTTP协议 状态码 telnet 笔记分享

    最近计算机网络课讲到这个,实习的笔试也考到了,做笔记总结一下.

  5. 【T-SQL进阶】03.执行计划之旅-1

    到大牛们说执行计划,总是很惶恐,是对知识的缺乏的惶恐,所以必须得学习执行计划,以减少对这一块知识的惶恐,下面是对执行计划的第一讲-理解执行计划. 本系列[T-SQL]主要是针对T-SQL的总结. T- ...

  6. php session_start()报错 解决办法

    1.php.ini中的output_buffering=off 改成output_buffering=4096 2.php.ini中的session.save_path是否设置好了 3.php.ini ...

  7. 通过ant-jmeter读取jtl文件拆分数据并insert DB

    前言:之前详解过通过jmeter生成的csv文件,解析csv存入DB,这个有弊端 第一:需独立创建一个job 第二:需按照一定规范输出 因此,放弃解析csv方式,直接解析自动化生成的原始jtl文件并集 ...

  8. Kafka 源代码分析之Log

    这里分析Log对象本身的源代码. Log类是一个topic分区的基础类.一个topic分区的所有基本管理动作.都在这个对象里完成.类源代码文件为Log.scala.在源代码log目录下. Log类是L ...

  9. Android高仿qq及微信底部菜单的几种实现方式

    最近项目没那么忙,想着开发app的话,有很多都是重复,既然是重复的,那就没有必要每次都去写,所以就想着写一个app通用的基本框架,这里说的框架不是什么MVC,MVP,MVVM这种,而是app开发的通用 ...

  10. 【恢复】 Redo文件丢失的恢复

    第一章 Redo文件丢失的恢复 1.1  online redolog file 丢失 联机Redo日志是Oracle数据库中比较核心的文件,当Redo日志文件异常之后,数据库就无法正常启动,而且有丢 ...