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
javascript的事件模型,采用"冒泡"模式,即子元素的事件会逐级向上"冒泡",成为父元素的事件.这点可以简化事件的绑定... 例如,一个表格(table) ...
- serialVersionUID的作用
Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的seri ...
- iOS复选框
这种按钮iOS没有原生效果. 可以靠按钮的不同点击状态来实现这个效果. 代码如下: _workBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [ ...
- bzoj1188 [HNOI2007]分裂游戏 博弈论 sg函数的应用
1188: [HNOI2007]分裂游戏 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 973 Solved: 599[Submit][Status ...
- MVC授权
public class CommonController : Controller { protected override void OnAuthorization(AuthorizationCo ...
- Ext.Net 学习随笔 002 默认按钮
在FormPanel中按回车按键,会触发默认按钮的click事件.设置方法为在FormPanel中设置DefaultButton属性,如果没有设置这个属性,默认为最后一个按钮. 1.缺省最后一个按钮为 ...
- 转:【总结】浏览器CSS Hacks汇总,浏览器兼容方式CSS Hacks
[总结]浏览器CSS Hacks汇总 浏览器兼容可以说是前端开发所要面对的第一个挑战,目前我的电脑上已经安装了6种浏览器(基于IE内核的不算,如Maxthon等). CSS hacks利用浏览器的 ...
- apk安全测试思路
一: apk安全测试 对于一款android的apk程序,主要进行的测试分两部分: 1) 接口测试 ---接口测试实际上是常见的web安全测试 2) android组件测试 --组件测试实际上是and ...
- 改写《python基础教程》中的一个例子
一.前言 初学python,看<python基础教程>,第20章实现了将文本转化成html的功能.由于本人之前有DIY一个markdown转html的算法,所以对这个例子有兴趣.可仔细一看 ...
- CentOS常见问题
1.图形界面无法启动 检查messagebus服务是否为开机启动:chkconfig --list messagebus 如果状态为不启动,则修改之:chkconfig messagebus on 启 ...