ASP.NET深入浅出系列4- 也谈委托和事件

一、委托的定义:

《高级汉语大词典》中是如下解释的:托付给别的人或机构办理。要说生活中的意思其实大家都能理解,无非是“当某人(机构)需要完成一件自己不能或不应该完成的事情的时候,此人(机构)物色一个合适的且有能力完成此事的人选,然后提供必要的信息,将此事委托给物色到的人(机构)来完成。” C#中的委托是一种引用方法的类型,一旦为委托分配了方法,委托将与该方法具有完全相同的行为,委托方法的使用可以像其他任何方法一样具有参数和返回值。委托对象能被传递给调用该方法引用的代码而无须知道哪个方法将在编译时被调用。委托是函数的封装,它代表一“类”函数。他们都符合一定的签名:拥有相同的参数列表、返回值类型。同时委托也可以看作是对函数的抽象,是函数的“类”。此时,委托实例代表一个具体的函数。委托应该和类同属一个层面,使用起来也很象一个类。我们先来看一个委托使用的实例:

public delegate void PrintHandler(string str);  // 声明委托类型
  
  public class PrintStr
  {       
    public void CallPrint(string input)
    {
      Console.WriteLine(input);
    }
    
  }
static void Main(string[] args)
{
      PrintStr myPrinter = new PrintStr();
      PrintHandler myHandler = null;
      // 将委托链接到方法,来实例化委托
      myHandler += new PrintHandler(myPrinter.CallPrint);
  
      if (myHandler != null)
        myHandler("Hello World!");  // 调用委托,相当于匿名调用委托所链接的方法
      myHandler -= new PrintHandler(myPrinter.CallPrint);
      if (myHandler == null)
        Console.WriteLine("myHandler==null");
      Console.Read();
}

得到的结果为

Hello World!

myHandler==null

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索函数
, 方法
, null
, 委托
, 方法委托
一个
,以便于您获取更多的相关知识。

时间: 2024-10-29 00:18:26

ASP.NET深入浅出系列4- 也谈委托和事件的相关文章

ASP.NET深入浅出系列2-页面生命周期详解

上个系列中介绍了页面生命周期的整体流程,可能有些读者还想更进一步了解整个生命周期的细节,限于篇幅我不可能讲到所有细节,也没必要,这里仅举几个例子,大家可以通过这几个例子学习一下页面生命周期的研究方式. Control类中有如下事件 // 当服务器控件绑定到数据源时发生. public event EventHandler DataBinding; // 当从内存释放服务器控件时发生,这是请求 ASP.NET 页时服务器控件生存期的最后阶段. public event EventHandler D

ASP.NET深入浅出系列3- Page类

在.NET Framework中,Page类为ASP.NET应用程序从.aspx文件构建的所有对象提供基本行为.该类在namespace System.Web.UI命名空间中定义,从TemplateControl中派生出来,实现了IHttpHandler接口: public class Page : TemplateControl, IHttpHandler TemplateControl是向ASP.NET页面和用户控件提供基本功能的抽象类.Control类位于这个层次的顶端.它定义由所有的AS

ASP.NET深入浅出系列1-ASP.NET编程模型

一.HTTP协议: 1.HTTP协议是什么 我们在浏览器的地址栏里输入的网站地址叫做URL(UniformResourceLocator,统一资源定位符).就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址.当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址.浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页.因此,在我们认识HTTP之前,有必要先弄清楚URL的组成,例如:http://www

分享ASP.NET AJAX深入浅出系列课程,视频,很好,给大家分享一下

问题描述 分享ASP.NETAJAX深入浅出系列课程,视频,很好,给大家分享一下 解决方案 解决方案二:谢.解决方案三:谢谢学习一下解决方案四:谢谢,学习下

ASP.NET Debug系列之三:Crash调试

前两天翻译了Tess Debug系列的Hang调试,今天就继续和大家看看Tess的第三篇文章,Crash调试.同样,由于机器的差异,可能你的调试结果和Tess有所差异,不过这个不要紧,只要你知道其中的原理就可以了.文章的图片可能会不太清楚,如果需要,大家可以去Tess的原文上看. ASP.NET Debug系列之一:环境搭配 Windbg,sos,tinyget,adplus常用命令 ASP.NET Debug系列之二:Hang调试 1. 问题重现 1) 浏览到http://localhost/

ASP.NET Debug系列之二 Hang调试

前几天我翻译了Tess debug系列的第一篇文章以及和大家介绍了一些debugger tools的基本命令.今天我们将一起讨论Tess关于debug 系列的第二篇文章.Tess在每个系列中都使用了问题+结果的结构,为了简化,我将把问题和结果一起给大家.此外,大家在自己机器上重现这些问题的时候,由于机器的差异,许多问题的结果都可能和Tess的不一样,这个不要紧,只要大家能够掌握原理就可以了.同时,由于blog的尺寸问题,图片显示的内容并不十分清晰,大家可以从Tess的链接上去找. ASP.NET

学习ASP.NET MVC系列 - 还有比这更简炼的吗?把复杂的事情变简单了,贡献啊!

转自   学习ASP.NET MVC系列: 学习ASP.NET MVC(一)--我的第一个ASP.NET MVC应用程序 学习ASP.NET MVC(二)--我的第一个ASP.NET MVC 控制器 学习ASP.NET MVC(三)--我的第一个ASP.NET MVC 视图 学习ASP.NET MVC(四)--我的第一个ASP.NET MVC 实体对象 学习ASP.NET MVC(五)--我的第一个ASP.NET MVC CURD页面 学习ASP.NET MVC(六)--我的第一个ASP.NET

ASP.NET MVC3 系列教程 - Razor视图引擎基础语法

原文:ASP.NET MVC3 系列教程 - Razor视图引擎基础语法 I:ASP.NET MVC3在Visual Studio 2010中的变化 在VS2010中新建一个MVC3项目可以看出与以往的MVC2发生了很明显的变化 1.ASP.NET MVC3必要的运行环境为.NET 4.0 (想在3.5用MVC3,没门!) 2.默认MVC3模板项目已集成 3.全新的Razor视图引擎 @{ ViewBag.Title = "Home Page"; }   <h2>@View

请问有没有基于asp或者.net技术的路谈系统

问题描述 请问有没有基于asp或者.net技术的路谈系统比如基于php的有discuz基于jsp的有leobbs那么基于asp的有没有啊谢谢 解决方案 解决方案二:up解决方案三:dvbbs可以看看解决方案四:以后需再关注,现在先帮你顶一下