C#委托理解(个人观点)
前言:
根据百度百科字面意思是:把事情托付给别人或别的机构(办理/处理), 我们就按汉字意思来理解;
再罗嗦一点通俗一点就是:当某人发生什么事情后把处理这个事情的工作托付给别人或别的机构(办理/处理);
举个现实的案例"李天1案例":当杨女士受到侵害后,委托律师对李天1进行控告,委托医生进行身体检查;
用委托实现就是如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace 委托
{
/*
c#委托理解---我个人对委托的理解
根据百度百科字面意思是:把事情托付给别人或别的机构(办理/处理)
再罗嗦一点通俗一点就是:当某人发生什么事情后把处理这个事情的工作托付给别人或别的机构(办理/处理);
现实的案例李天1案例:当杨女士受到侵害后,委托律师对李天1进行控告,委托医生进行身体检查;
用程序实现就是如下
*/
class Program
{
static void Main(string[] args)
{
MissYang missYang = new MissYang();
missYang.WasHurted = true; //伤害杨小姐
/*传统实现方式.....................................................................*/
////律师起诉李天1
//Lawyer lawyer = new Lawyer();
//lawyer.Sue();
//医生对杨女士检查身体
//Doctor doctor = new Doctor();
//doctor.Check(); /*使用委托实现方式..................................................................*/
//1:杨小姐委托律师起诉,委托医生检查身体,那么杨小姐这个类中就应该有个委托的功能;即一个委托的实例,对应代码 @A
//那么我们就要先定义一个委托类型(不存在任意一个类中),MissYangDelegate,对应代码 @B
//2:杨小姐委托律师要起诉李天1,也即是将律师起诉的方法传到杨小姐的委托实例中. 意味着这个律师起诉方法就是杨小姐委托的事情; 对应代码 @C
//3:杨小姐委托医生检查身体, 也即是将医生检查身体的方法传到杨小姐的委托实例中.意味着这个医生检查身体方法就是杨小姐委托的事情;对应代码 @D
missYang.missYangDelegate = new MissYangDelegate(new Lawyer().Sue);// @C
missYang.missYangDelegate();//启动委托,这里启动后会去执行 new Lawyer().Sue()方法
missYang.missYangDelegate = new MissYangDelegate(new Doctor().Check);// @D
missYang.missYangDelegate();//启动委托,这里启动后会去执行 new Doctor().Check()方法 Console.Read();
}
} /// <summary>
/// 杨小姐类
/// </summary>
class MissYang
{
/// <summary>
/// 是否被被伤害
/// </summary>
public bool WasHurted = false;
/// <summary>
/// '杨小姐委托'的实例
/// </summary>
public MissYangDelegate missYangDelegate;//@A
} /// <summary>
/// 律师类
/// </summary>
class Lawyer
{
public void Sue()
{
Console.WriteLine("律师起诉李天1......");
}
}
/// <summary>
/// 医生类
/// </summary>
class Doctor
{
public void Check()
{
Console.WriteLine("医生给杨小姐检查身体......");
}
}
/// <summary>
/// '杨小姐委托'类型
/// </summary>
public delegate void MissYangDelegate();//@B
}
后序:从上面的例子也许并不能直观的看出使用委托的好处;但是知道委托是这么一回事(简单来说:实例委托类型的时候,往委托里面传一个方法名,如 "@C"和"@D"两处),先抛开事件不去想;
C#委托理解(个人观点)的更多相关文章
- 委托学习总结(一)浅谈对C#委托理解
初入社会,对于我这个初级程序员来说要学的东西实在太多了,公司最近在做一个winform框架开发的桌面应用程序,众所周知,winform也好,webform也好,里面随处可见的事件驱动,有事件,当然也少 ...
- 通过Func 委托理解委托和匿名方法及Lambda 表达式
Func<T, TResult> 委托 封装一个具有一个参数并返回 TResult 参数指定的类型值的方法. 命名空间: System 程序集: mscorlib(在 mscorlib.d ...
- C#学习之初步理解委托、事件、匿名方法和Lambda
最经在学习LinqtoSql,然后扯到Lambda表达式,然后扯到匿名方法,然后扯到委托,最后扯到事件处理...后来发现对委托这个概念和事件处理这个过程理解得不是很清晰,遂得一下学习笔记.那里说得不对 ...
- 理解委托(delegate)及为什么要使用委托
理解委托(delegate)及为什么要使用委托 委托:是一种定义方法签名的类型. 当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联. 您可以通过委托实例调用方法. 上述为官方说法,理解起来 ...
- C#对委托的初步理解理解
作为新手对委托的学习: 1.定义委托:委托实际上是一个类,在定义委托前就知道了方法的返回类型和方法的参数类型(可以把委托理解为只知道方法的返回类型和方法的参数类型,不知道方法体) public de ...
- C#委托与事件
一.在控制台下使用委托和事件 我们都知道,C#中有"接口"这个概念,所谓的"接口"就是定义一套标准,然后由实现类来具体实现其中的方法,所以说"接口,是 ...
- C#深入浅出 C#语法中的重中之重——委托(四)
入行半年多了,委托干什么用的还不知道,真心说不过去了,关键对这东西有点恐惧,主要是被老师吓的,记得我C#专业课老师在讲到委托时,原话是这样的,同学们,委托这个地方是难点,暂时不讲,讲了你也不懂,等你有 ...
- 深入理解事件(Event)
前言 在前一篇文章中讲到了Event 发布与订阅(一) 里面用到了事件来实现一些发布与订阅,当时对事件及其委托理解的还不是太深入,可能在使用上有点捉急.这篇来好好讲讲事件,以及通过一些小DEMO来加深 ...
- 再谈C#委托与事件
之前写过一篇关于C#委托与事件的文章(见<C#委托和事件例析>),不过还是收到一些网友的提问.所以,今天再换另一个角度来详解一下这个问题. 一.在控制台下使用委托和事件 我们都知道,C#中 ...
随机推荐
- javascript学习笔记全记录
js的初步了解 1.就是用来修改样式的,修改的是行内样式.任何样式都能够修改. 2.css里面怎么写js就怎么写. 3.任何元素都能加事件:事件都要小写 js的三大 ...
- python基础(1)
一.应用 python应用:数据分析.组件集成.网络服务.图像处理.数值计算和科学计算. 使用python的企业:YouTube.dropbox.BT.Quora.豆瓣.知乎.google.Yahoo ...
- css 设置背景图片模糊,内容不模糊
需求:一个div设置了background: url,现在需要使图片背景模糊,div内的文字清晰显示. 原始代码: <!DOCTYPE html> <html lang=" ...
- Android Sqlite数据库加密
Android使用的是开源的SQLite数据库,数据库本身没有加密,加密思路通常有两个: 1. 对几个关键的字段使用加密算法,再存入数据库 2. 对整个数据库进行加密 SQLite数据库加密工具: 收 ...
- linux创建动态库
[1]新建源程序sharelib.c /************************************************************************* > F ...
- code complete part2
基本数据类型: 1. 程序主体中仅能出现的数字就是0和1,除此之外,所有的数字都要用宏定义或者const类型,用清晰的变量名描述用途 2. 预防除零错误, assert(denominator!=0) ...
- lame边录音边转换
文章出处:http://big-joe.blog.sohu.com/88902836.html void CViewTFreqList::RecFileInit(LPCTSTR sFileName, ...
- Linux中MySQL的基本操作
1. 用root用户登录mysql mysql -u root -p 2. 查看database show databases; 3. 查看table use database名 show table ...
- Python几种主流框架
从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python Web应用开发框架 Djang ...
- 更新日志(建议升级到2016.12.17) && 更新程序的方法
更新程序的方法: 1,在控制面板里点击备份当前数据库文件到磁盘,把当天获取的信息从内存写到磁盘/存储卡.2,下载最新版的源码 wget -O "infopi.zip" " ...