前言:

根据百度百科字面意思是:把事情托付给别人或别的机构(办理/处理), 我们就按汉字意思来理解;

再罗嗦一点通俗一点就是:当某人发生什么事情后把处理这个事情的工作托付给别人或别的机构(办理/处理);

举个现实的案例"李天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#委托理解(个人观点)的更多相关文章

  1. 委托学习总结(一)浅谈对C#委托理解

    初入社会,对于我这个初级程序员来说要学的东西实在太多了,公司最近在做一个winform框架开发的桌面应用程序,众所周知,winform也好,webform也好,里面随处可见的事件驱动,有事件,当然也少 ...

  2. 通过Func 委托理解委托和匿名方法及Lambda 表达式

    Func<T, TResult> 委托 封装一个具有一个参数并返回 TResult 参数指定的类型值的方法. 命名空间: System 程序集: mscorlib(在 mscorlib.d ...

  3. C#学习之初步理解委托、事件、匿名方法和Lambda

    最经在学习LinqtoSql,然后扯到Lambda表达式,然后扯到匿名方法,然后扯到委托,最后扯到事件处理...后来发现对委托这个概念和事件处理这个过程理解得不是很清晰,遂得一下学习笔记.那里说得不对 ...

  4. 理解委托(delegate)及为什么要使用委托

    理解委托(delegate)及为什么要使用委托 委托:是一种定义方法签名的类型. 当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联. 您可以通过委托实例调用方法. 上述为官方说法,理解起来 ...

  5. C#对委托的初步理解理解

    作为新手对委托的学习: 1.定义委托:委托实际上是一个类,在定义委托前就知道了方法的返回类型和方法的参数类型(可以把委托理解为只知道方法的返回类型和方法的参数类型,不知道方法体) public  de ...

  6. C#委托与事件

    一.在控制台下使用委托和事件 我们都知道,C#中有"接口"这个概念,所谓的"接口"就是定义一套标准,然后由实现类来具体实现其中的方法,所以说"接口,是 ...

  7. C#深入浅出 C#语法中的重中之重——委托(四)

    入行半年多了,委托干什么用的还不知道,真心说不过去了,关键对这东西有点恐惧,主要是被老师吓的,记得我C#专业课老师在讲到委托时,原话是这样的,同学们,委托这个地方是难点,暂时不讲,讲了你也不懂,等你有 ...

  8. 深入理解事件(Event)

    前言 在前一篇文章中讲到了Event 发布与订阅(一) 里面用到了事件来实现一些发布与订阅,当时对事件及其委托理解的还不是太深入,可能在使用上有点捉急.这篇来好好讲讲事件,以及通过一些小DEMO来加深 ...

  9. 再谈C#委托与事件

    之前写过一篇关于C#委托与事件的文章(见<C#委托和事件例析>),不过还是收到一些网友的提问.所以,今天再换另一个角度来详解一下这个问题. 一.在控制台下使用委托和事件 我们都知道,C#中 ...

随机推荐

  1. fastjson解析json,model字段有顺序要求吗

    解决办法已经写到我的公众号,二维码在下面,欢迎关注,谢谢. 本人联系方式: 更多精彩分享,可关注我的微信公众号: 若想给予我分享更多知识的动力,请扫描下面的微信打赏二维码,谢谢!: 微信号:Weixi ...

  2. error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

    以前一直用的VC6.0,最近换成VS2010了.哎这几天光折腾VS2010了. 曾经我以为程序没啥头绪忒头疼,现在觉得乱七八糟的编译问题才叫一个头裂=口= 原因:VC6.0中,如果没有直接显示指定的返 ...

  3. [原创]cocos2d-x研习录-第三阶 特性之动作

    在前面的Cocos2D-x的概念类中,我们了解到节点类CCNode.导演类CCDirector.场景类CCScene.布景层类CCLayer和精灵类CCSprite等,这些类都是构成游戏画面的基本元素 ...

  4. eclipse+spket+Extjs4.2.1开发环境搭建

    一.开发工具配置   1.http://www.eclipse.org/downloads/下载Eclipse,解压.         2.http://spket.com/download.html ...

  5. geohash基本原理

    geohash基本原理是将地球理解为一个二维平面,将平面递归分解成更小的子块,每个子块在一定经纬度范围内拥有相同的编码,这种方式简单粗暴,可以满足对小规模的数据进行经纬度的检索 目录: 经纬度常识 认 ...

  6. 创建COM对象时遭遇 800702e4

    SolidEdge st5(x64) SDK /vs2012/win8.1 x64 西夏普创建SEApplication COM对象时遭遇800702e4.翻来覆去的调vs进程的权限,调se进程的权限 ...

  7. MS-MPI 的使用

    MPI在windows上的扯淡 MPI的实现一般使用MPICH与OpenMPI,这两个库在12年的版本就已经停止了对windows的更新,不支持MPI的新特性(也不知道有没有bug方面的问题),配置的 ...

  8. 如何提高ASP.NET页面载入速度的方法

    前言 本文是我对ASP.NET页面载入速度提高的一些做法,这些做法分为以下部分: 1.采用 HTTP Module 控制页面的生命周期. 2.自定义Response.Filter得到输出流stream ...

  9. tcpdump抓SQL[转]

    转自:http://www.cnblogs.com/LMySQL/p/5060604.html 前言:假设如果有个服务器几十个链接突然达到上千个链接,show processlist,general_ ...

  10. 【MySQL】排序原理与案例分析

    前言 排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐 ...