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. MVC之Razor语法

    Razor是MVC3中才有的新的视图引擎.我们知道,在ASP.NET中,ASPX的视图引擎依靠<%和%>来调用C#指令.而MVC3以后有了一套新的使用@标记的Razor语法,使用起来更灵活 ...

  2. 真假云主机,VPS资料集合

    资料来源: http://www.west263.com/services/CloudHost/pk.asp?ads=baidu912 用"云里雾里"形容中小企业用户对云计算的理解 ...

  3. NeHe OpenGL教程 第三十一课:加载模型

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  4. phpmyadmin数据库导入出错

    SQL 查询: -- phpMyAdmin SQL Dump-- version 3.5.1-- http://www.phpmyadmin.net---- 主机: localhost-- 生成日期: ...

  5. java学习日志(1):命令行and小程序

    1.dos命令行,常见的命令 dir:列出当前目录下的文件以及文件夹md:创建目录rd:删除目录(必须空)cd:进入指定目录cd.. :退回到上一级目录cd/:退回到根目录del:删除文件exit:退 ...

  6. 【JavaScript】允许IE8使用placeholder

    var placeholder = function ($element) { var $ = window.jQuery; var version = parseFloat($.browser.ve ...

  7. 图片--Android加载图片导致内存溢出(Out of Memory异常)

    Android在加载大背景图或者大量图片时,经常导致内存溢出(Out of Memory  Error),本文根据我处理这些问题的经历及其它开发者的经验,整理解决方案如下(部分代码及文字出处无法考证) ...

  8. CAP原则(CAP定理)

    CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...

  9. 01.base-v1.js

    /* Date: 2014-01-21 */ function login() { return location.href = "https://passport.jd.com/new/l ...

  10. ppm与mg/m3转换

    http://wenku.baidu.com/link?url=PY0Nb09VWmBDZgLvMhaHYGJyaC6YcdYAI5XTPRkxMpDHPrs3dNxskYkKmp2F0E6Sl2H5 ...