public delegate void aHandler(string text);

    public class A1
{
public void Print(string txt)
{
Console.WriteLine(txt + "我是1号");
}
} public class A2
{
public void Print(string txt)
{
Console.WriteLine(txt + "我是2号");
}
} class B1
{
public static void StaticPrint(string txt)
{
Console.WriteLine(txt + "我是3号");
} public static void Main()
{
string my = "委托链";
A1 a1 = new A1();
A2 a2 = new A2();
//创建委托实例
aHandler ah1 = new aHandler(a1.Print);
aHandler ah2 = new aHandler(a2.Print);
aHandler ah3 = new aHandler(StaticPrint); Console.WriteLine("委托实例ah1的打印结果:");
ah1(my); Console.WriteLine("委托实例ah2的打印结果:");
ah2(my); Console.WriteLine("委托实例ah1+ah2的打印结果:");
aHandler ah = ah1 + ah2;
ah(my); Console.WriteLine("委托实例ah1+ah2+ah3的打印结果:");
ah += ah3;
ah(my); Console.WriteLine("委托实例ah1+ah3的打印结果:");
ah -= ah2;
ah(my); Console.WriteLine("委托实例ah3的打印结果:");
ah -= ah1;
ah(my); Console.WriteLine("试图调用null委托会引发异常");
try
{
ah-=ah3;
ah(my);
}
catch(NullReferenceException ex) //尝试取消引用空引用对象时引发的异常
{
Console.WriteLine(ex.Message);
} Console.WriteLine("试图从null中移出委托是无效操作");
try
{
ah -=ah3;
}
catch(NullReferenceException ex)
{
Console.WriteLine(ex.Message);
} Console.Read();
}
}

运行结果:

委托实例ah1的打印结果:
委托链我是1号
委托实例ah2的打印结果:
委托链我是2号
委托实例ah1+ah2的打印结果:
委托链我是1号
委托链我是2号
委托实例ah1+ah2+ah3的打印结果:
委托链我是1号
委托链我是2号
委托链我是3号
委托实例ah1+ah3的打印结果:
委托链我是1号
委托链我是3号
委托实例ah3的打印结果:
委托链我是3号
试图调用null委托会引发异常
未将对象引用设置到对象的实例。
试图从null中移出委托是无效操作

委托是对方法或方法列表的引用,可以说是一种引用类型。委托分为三步:声明、实例化、调用。

c# 了解委托的更多相关文章

  1. HTML 事件(三) 事件流与事件委托

    本篇主要介绍HTML DOM中的事件流和事件委托. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4 ...

  2. C#基础篇 - 理解委托和事件

    1.委托 委托类似于C++中的函数指针(一个指向内存位置的指针).委托是C#中类型安全的,可以订阅一个或多个具有相同签名方法的函数指针.简单理解,委托是一种可以把函数当做参数传递的类型.很多情况下,某 ...

  3. [.NET] C# 知识回顾 - 委托 delegate (续)

    C# 知识回顾 - 委托 delegate (续) [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6046171.html 序 上篇<C# 知识回 ...

  4. [C#] C# 知识回顾 - 委托 delegate

    C# 知识回顾 - 委托 delegate [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6031892.html 目录 What's 委托 委托的属性 ...

  5. 9、委托、事件、Lambda

    开始 关于委托,肯定是要有问题的. 第一个问题,委托用来干什么? 看.net中的表述:在.net平台下,委托类型用来定义和相应应用程序中的回调.(回调?处理内存中两个实体双向通信的一种技术.)   第 ...

  6. iOS 委托与文本输入(内容根据iOS编程编写)

    文本框(UITextField) 本章节继续编辑 JXHypnoNerd .文件地址 . 首先我们继续编辑  JXHypnosisViewController.m 修改  loadView 方法,向  ...

  7. C#委托异步调用

    参考页面: http://www.yuanjiaocheng.net/webapi/mvc-consume-webapi-get.html http://www.yuanjiaocheng.net/w ...

  8. JavaScript事件代理和委托(Delegation)

    JavaScript事件代理 首先介绍一下JavaScript的事件代理.事件代理在JS世界中一个非常有用也很有趣的功能.当我们需要对很多元素添加事件的时候,可以通过将事件添加到它们的父节点而将事件委 ...

  9. .NET面试题系列[7] - 委托与事件

    委托和事件 委托在C#中具有无比重要的地位. C#中的委托可以说俯拾即是,从LINQ中的lambda表达式到(包括但不限于)winform,wpf中的各种事件都有着委托的身影.C#中如果没有了事件,那 ...

  10. .NET基础拾遗(4)委托、事件、反射与特性

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

随机推荐

  1. (WF)InvalidWorkflowException

    之前一直运行正常的xaml突然不能运行了,总是显示如下错误. The test caught an unhandled exception. Caught: System.Activities.Inv ...

  2. SOA_环境安装系列1_Oracle SOA Suite11g安装总括(案例)

    2015-01-01 Created By BaoXinjian

  3. Codeforces Round #366 (Div. 2) C Thor(模拟+2种stl)

    Thor 题意: 第一行n和q,n表示某手机有n个app,q表示下面有q个操作. 操作类型1:app x增加一条未读信息. 操作类型2:一次把app x的未读信息全部读完. 操作类型3:按照操作类型1 ...

  4. 树莓派通过apt方式安装opencv库

    1.安装opencv     开始之前进行必要的更新工作. sudo apt-get update     安装opencv. sudo apt-get install libcv-dev     安 ...

  5. 拥抱高效、拥抱 Bugtags 之来自用户的声音(五)

    Bugtags使用心得(创业公司场景篇) ——成都嘿嘿科技有限公司 作者:小花 一.产品定义 关于手机客户端产品(APP)的 bug 提交.监测及管理且具有团队协作性质的系统. 二.使用环境 公司:初 ...

  6. 使用spool导出数据

    源地址:http://wallimn.iteye.com/blog/472182 set trimspool on set echo off set feedback off set pagesize ...

  7. 回朔法/KMP算法-查找字符串

    回朔法:在字符串查找的时候最容易想到的是暴力查找,也就是回朔法.其思路是将要寻找的串的每个字符取出,然后按顺序在源串中查找,如果找到则返回true,否则源串索引向后移动一位,再重复查找,直到找到返回t ...

  8. CRM PrincipalObjectAccess(POA)

    PrincipalObjectAccess (POA) table is an important table which holds all grants share on CRM objects. ...

  9. poj3253

    一道赫夫曼树的经典题目,一直以为这题的代码会很复杂,没想到书中竟描述地如此简单 #include <stdio.h> int n; long long p[20010]; //一道经典的赫 ...

  10. Python之几个技巧特点

    今天偶然看到一篇文章<你可能不知道的30个Python语言的提点技巧>,虽然做python有几年了,但中间还是好多不知道或没想到,特在这里做下摘抄. 原文地址: http://soft.c ...