C#委托基础学习
什么是委托
委托,顾名思义就是在你忙着做另一件事时候,你要去做另一件事,于是你可能就会委托别人帮你做,让别人把结果返回给你。编程时,委托也有这个思想。
我目前对委托的看法是,在编程中,委托其实是具有特定参数列表和返回类型的方法的抽象,相当于一个类,而那些方法就是它的实例对象。就相当于在编程时利用 委托这个类去实现方法,委托这个类就像是帮你做事的人,方法就是你要做的事。
什么时候使用委托
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#委托基础学习的更多相关文章
- C#/.NET 基础学习
初识C# C#是微软公司发布的面向对象的.运行于.NET Framework之上的高级程序设计语言.与Java有着明显不同,借鉴Delphi的特点,与COM(组件对象模型)直接集成,是微软公司 .NE ...
- C# 委托基础1.0
在C# 1.0中提出了一种新特性叫作:委托.委托本质上一种类型.是对特定方法的抽象,定义委托后,可以将方法封装,把方法当参数,传递 using System; using System.Collect ...
- C#委托深入学习
一基础学习: .Net delegate类型:委托跟回调函数是很有渊源的.回调其实跟通知机制有关,考虑这样一个基本的事件序列: a对象调用了b对象的某个方法,希望b对象在其方法完成之时调用a对象的某个 ...
- JavaScript 基础 学习 (四)
JavaScript 基础 学习 (四) 解绑事件 dom级 事件解绑 元素.on事件类型 = null 因为赋值的关系,所以给事件赋值为 null 的时候 事件触发的时候,就没有事件处理 ...
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
- 如何从零基础学习VR
转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...
- IOS基础学习-2: UIButton
IOS基础学习-2: UIButton UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...
- HTML5零基础学习Web前端需要知道哪些?
HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...
- python入门到精通[三]:基础学习(2)
摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...
随机推荐
- ELK-初识Elasticsearch
第一篇:初识Elasticsearch 1.安装 Elasticsearch 要求 java8+的环境,推荐使用 Oracle 1.8.0_131版本的JDK.Java JDK的安装此处不做介绍.这里 ...
- Java注解--实现简单读取excel
实现工具类 利用注解实现简单的excel数据读取,利用注解对类的属性和excel中的表头映射,使用Apache的poi就不用在业务代码中涉及row,rows这些属性了. 定义注解: @Retentio ...
- PHP把2个二维数组合并一个二维数组
$a = array(0 => Array(id => 66,class_name => www.iiwnet.com),1 => Array(id => 67,clas ...
- 在win7下如何设置计划任务每一分钟执行一次
- php打包文件为ZIP包后下载到本地
这是一个工作中需要打包下载当前产品的所有图片到本地,文件格式为ZIP压缩包,打包下载文件跟图片一样,本程序细节为实际情况,使用需按照自己实际情况书写:<?php/**************** ...
- 矩阵的f范数及其求偏导法则
转载自: http://blog.csdn.net/txwh0820/article/details/46392293 矩阵的迹求导法则 1. 复杂矩阵问题求导方法:可以从小到大,从scalar到 ...
- 青出于蓝而胜于蓝 — Vue.js对Angular.js的那些进步
Angular.js与Vue.js是非常有渊源的两款前端框架,据Vue.js的官方网站描述,在其早期开发时,灵感来源就是Angular.js.而在很多方面,Vue.js也正像是中国的那句古话,&quo ...
- 记一次redis挂机导致的服务雪崩事故~不对,是故事
事故时常有,最近特别多!但每次事故总会有人出来背锅!如果不是自己的锅,解决了对自己是一种成长,如果是自己的锅,恐怕锅大了,就得走人了,哈哈哈... 这不,最近又出了一个锅:从周五开始,每天到11点就不 ...
- Bootstrap列表组
前面的话 列表组是Bootstrap框架新增的一个组件,可以用来制作列表清单.垂直导航等效果,也可以配合其他的组件制作出更漂亮的组件.本文将详细介绍Bootstrap列表组 基础列表组 基础列表组,看 ...
- Lniux下安装mysql----编译版
####安装mysql-5.7.10rpm -e --nodeps mysqlrpm -e mysqlclient10useradd -g mysql -s /sbin/nologininstall_ ...