今天在博客圆首页看到一篇文章:《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. 树形菜单复选框级联选择HTML

    模块标题 标识符 类别 链接 排序 系统管理   组   1 用户权限设定 Sys_UserModelConfigList 模块 Sys_UserModelConfigList.aspx 1 角色管理 ...

  2. hdu 2489 最小生成树状态压缩枚举

    思路: 直接状态压缩暴力枚举 #include<iostream> #include<algorithm> #include<cstdio> #include< ...

  3. MVC中的Routing

    Routing ASP.NET Routing模块的责任是将传入的浏览器请求映射为特有的MVC controller actions. public static void RegisterRoute ...

  4. 学习Slim Framework for PHP v3 (五)--route怎么被调用的?

    上一篇中分析了get()如何加入新的route的,这篇来分析route是如何被调用的. 首先,route是在routers里保存,router有在container中存放.container提供了ge ...

  5. Unity3d 引擎原理详细介绍、Unity3D引擎架构设计

    体系结构 为了更好地理解游戏的软件架构和对象模型,它获得更好的外观仅有一名Unity3D的游戏引擎和编辑器是非常有用的,它的主要原则. Unity3D 引擎 Unity3D的是一个屡获殊荣的工具,用于 ...

  6. 模仿Word中组织结构图的特点生成流程图

    //基本原理: // 1. 从下往上计算位置 // 2. 模仿Word中组织结构图的特点 //调用代码: Tree<string> tree = new Tree<string> ...

  7. (转)Android之常用功能方法大集合

    这些,都是Andorid中比较常用的方法和功能,在网上搜集整理一下记录之,以备不时之需.由于经过多次转载,源文作者不确凿,在此申明,敬请见谅.不得不赞,非常实用. 1.判断sd卡是否存在 boolea ...

  8. Swift学习链接

    http://wiki.jikexueyuan.com/project/swift/chapter1/02_a_swift_tour.html

  9. 理解C#系列 / 核心C# / 名称空间

    名称空间namespace 名称空间 名称空间用来逻辑分类,而不是物理上的,名称空间与程序集无关[程序集:经由编译器编译得到的文件],同一个程序集中可以有2不同的名称空间,也可以在不同的程序集中定义同 ...

  10. UI1_ViewController视图切换及Appdelegate

    // // ThirdViewController.h // UI1_ViewController视图切换及Appdelegate // // Created by zhangxueming on 1 ...