今天在博客圆首页看到一篇文章:《C# 白话系列之——白话委托》

http://www.cnblogs.com/djangochina/p/3410002.html#commentform

首先,基于看这篇文章的时候有一些疑问我于是写一篇文章来释疑

OK,LET’S GO

先看代码:

public string GetMessage(string messageType)
{
string ret = ""; switch (messageType)
{
case "error":
ret = "错误消息";
break;
case "warning":
ret = "警告消息";
break;
default:
ret = "未知消息";
break;
}
return ret;
}
这段代码之前说了一句:现在我们有如下一个方法,怎样把这个方法可以赋值给一个变量呢?
于是在此我便疑惑了,为什么要把一个委托赋值给一个变量?赋值给这个变量有什么必要?用于什么场景?
delegate string MessageDelegate(string messageType);
public void Test()
{
MessageDelegate myMessage = GetMessage; string ret = myMessage("error");
}
代码如上,这就是我不明白的。因为在我看来,这段代码如果要赋值给一个变量很简单
string ret = GetMessage("errro");
这样调用就可以,为何还一定要赋值给一个委托再来处理呢?

好了,接下来我们看下面的示例:
void MethodWithCallback(string param1, string param2, SampleDelegate callback)
{
callback("The string is:" + (param1 + param2).ToString());
}
这是一个方法,接下来我们再看下我们定义的委托:
public delegate void SampleDelegate(string message);
接下来实现该委托的方法:
public void DelegateMethod(string message)
{
Response.Write(message);
}

从上面这个示例来看,把一个委托赋值给一个变量这个场景是基本很少的。

而当我们希望传两个参数就希望执行某个方法的时候这个场景对于委托来说有着更多的作用

现在在来看下我们平时传两个参数希望执行某个方法时是如何调用的:

void Method(string param1, string param2)
{
Callback("The string is : " + (param1 + param2).ToString());
} public void Callback(string message)
{
Response.Write(message);
}

好了,就到这里吧。至此卖萌结束!!!

欢迎各位评论,同时有反对的请尽量给个理由,好改正问题

《C# 白话系列之——白话委托》读后记的更多相关文章

  1. C# 白话系列之——白话委托

    今天看到首页有个委托的文章,但大都写的太专业,而且没有实用的例子场景.正好昨天做了一个有关委托的功能,所以也来凑个热闹,用白话掰掰 一.委托是什么 我们都知道数据类型,简单点的如,想给一个变量赋值整数 ...

  2. [转]大白话系列之C#委托与事件讲解(三)

    本文转自:http://www.cnblogs.com/wudiwushen/archive/2010/04/21/1717378.html [我希望大家在看完文章的时候,多做做练习,自己也可以想个场 ...

  3. JavaScript进阶系列06,事件委托

    在"JavaScript进阶系列05,事件的执行时机, 使用addEventListener为元素同时注册多个事件,事件参数"中已经有了一个跨浏览器的事件处理机制.现在需要使用这个 ...

  4. 委托、Lambda表达式、事件系列05,Action委托与闭包

    来看使用Action委托的一个实例: static void Main(string[] args) { int i = 0; Action a = () => i++; a(); a(); C ...

  5. 委托、Lambda表达式、事件系列03,从委托到Lamda表达式

    在"委托.Lambda表达式.事件系列02,什么时候该用委托"一文中,使用委托让代码简洁了不少. namespace ConsoleApplication2 { internal ...

  6. 大白话系列之C#委托与事件讲解大结局

    声明:本系列非原创,因为太精彩才转载,如有侵权请通知删除,原文:http://www.cnblogs.com/wudiwushen/archive/2010/04/20/1698795.html 今天 ...

  7. 并发系列5-大白话聊聊Java并发面试问题之微服务注册中心的读写锁优化【石杉的架构笔记】

  8. 白话系列之实现自己简单的mvc式webapi框架

    前言:此文为极简mvc式的api框架,只当做入门api的解析方式,并且这里也不算是mvc框架,因为没有view层,毕竟现在大部分都属于前后端分离,当然也可以提供view层,因为只是将view当做文本返 ...

  9. 并发系列4-大白话聊聊Java并发面试问题之公平锁与非公平锁是啥?【石杉的架构笔记】

随机推荐

  1. 【Linux】Shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  2. Linux 驱动分类 与访问技术

    驱动开发概述 1.驱动分类 1.1 常规分析法 1.1.1  字符设备  字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,  这样的驱动通常实现open, close, read和wri ...

  3. Linux apache日志分析常用命令汇总

    1.查看当天有多少个IP访问: awk '{print $1}' log_file|sort|uniq|wc –l 2.查看某一个页面被访问的次数: grep "/index.php&quo ...

  4. 转 【O2O案例】汽车后市场垂直化电子商务:平业模式解析

    核心提示:一.商业模式简介.汽车后市场垂直化电子商务是我在2010年初开始筹划,起因是在淘宝工作期间运营汽车类目后遇到很多问题无决,由于 一.商业模式简介. 汽车后市场垂直化电子商务是我在2010年初 ...

  5. C# 微信支付证书使用

    http://wenku.baidu.com/link?url=wt24Gc-2-TbZRoQQ2vRNl5P0pMgp7dIoJMzb_zc1FyiMnBECBDMJ9RTuFCeHl9Lu0ahg ...

  6. MDNavBarView下拉导航菜单(仿美团导航下拉菜单)

    说到下拉导航菜单这个东西用得还真不少,细心算一下做开发以来这样的菜单已经写了第三次了,但基本都是不能复用.感觉特累人.不经意看到同事写一个类似的下拉菜单,但他引用了开源库仿大众菜单的库,大致看了一下, ...

  7. Exchange之准备AD及域

    1.         若有旧版本的Exchange 2003,则需要执行以下命令: setup.com /PrepareLegacyExchangePermissions 2.         准备架 ...

  8. 桌面虚拟化之XenDesktop7

    安装篇 1. 安装所需要的组件 2. 安装核心组件 配置篇 完整的部署 1. 打开Citrix Studio软件 2. 选择完整部署 3. 创建站点 4. 选择数据库(可以使用自己的或者默认使用自带的 ...

  9. C#判断奇偶数的函數

    // 现代流行的"程序员" public static bool IsOdd(int n) { while (true) { switch (n) { : return true; ...

  10. 在调用“Fill”前,SelectCommand 属性尚未初始化

    在调用“Fill”前,SelectCommand 属性尚未初始化 是因为少写了一行代码: private readonly string strConnection = System.Configur ...