网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.框架Hibernate Validator&n.
.用OSCache提升J2EE系统运行性能.
.关注性能:改进您的开发过程.
.tomcat下中文的彻底解决.
.使用JBoss Eclipse IDE开发J2EE应.
.[webservices开发]XFire在Spring.
.JDBC 概述(三).
.让Java程序只运行一个实例.
.用SQLJ开发数据库(5).
.软件设计:色彩化的设计.
.您的利用Java平台的特性建造一个.
.Flex与Servlet通讯(上)。.
.Think in java 3rd 中文版12_13.
.怎样锁右键,和解开右键?.
.java的io简单应用 选择自 Fr.
.关于Struts和Webwork2的比较.
.JBuilderX使用Ant读书笔记.
.如何用 servlet 打开非 HTML 格式.
.AtEndOfLine 属性.
.简单的字符转换和反转换函数.

初探.NET中的delegate类型与.NET事件

发表日期:2008-1-5



  1.了解delegate
  
  delegate可以认为是一种函数的指针,一个delegate类型的实例代表可以代表一个方法,在实际使用中我们可以在不知道方法名称的情况下调用到这个方法。前面说太多可能会使大家变得糊涂,或者摸不着头脑,我举个例子,来具体说明此种类型的用法:
  
  整个例程的代码,是控制台项目.
  
  //代码开始
  using System;
  
  namespace ConsoleApp1
  {
  
  public delegate string FunctionPointer(string strName);
  class Class1
  {
  
  [STAThread]
  static void Main(string[] args)
  {
  //
  // TODO: 在此处添加代码以启动应用程序
  System.Console.WriteLine("Hello World!");
  FunctionPointer fpa = new FunctionPointer(aFunction);
  FunctionPointer fpb = new FunctionPointer(bFunction);
  InvokeMethod(fpa);
  InvokeMethod(fpb);
  System.Console.ReadLine();
  //
  }
  public static string aFunction(string sNameA)
  {
  return "aFunction say i'm " + sNameA;
  }
  public static string bFunction(string sNameB)
  {
  return "bFunction say i'm " + sNameB;
  }
  public static void InvokeMethod(FunctionPointer fp)
  {
  System.Console.WriteLine(fp("storm"));
  }
  }
  }
  //代码结束
  
  步骤1:要使用delegate类型首先应该建立delegate样板,所谓delegate样板其实就是delegate能够调用的方法的签名,什么是方法的签名?方法的签名可以认为是方法的参数类型、数量、返回值类型这些特征。
  
  定义的形势如下: 访问修饰符(public) delegate 返回值类型 名称(参数列表);
  
  说明:返回值类型应该是你定义的delegate类型所预备调用的方法的返回值类型,参数列表应该与你预备使用delegate来调用的方法的参数列表相同(指的是数量、类型、顺序相同,名称当然无所谓了)
  一个实际的例子就是上面程序的
  public delegate string FunctionPointer(string strName);
  
  步骤2:定义delegate预备调用的方法,当然该方法要与你刚才声明的delegate有相同的返回值和参数表;
  例如上面程序的:
  public static string aFunction(string sNameA)
  {
  return "aFunction say I'm " + sNameA;
  }
  public static string bFunction(string sNameB)
  {
  return "bFunction say I'm " + sNameB;
  }
  
  步骤3:定义delegate类型的处理函数,在这里可以定义如何调用你的delegate类型所指的方法,在实际使用中可以在这里来动态决定传入的参数等信息。
  如上面程序的
  public static void InvokeMethod(FunctionPointer fp)
  {
  System.Console.WriteLine(fp("storm97"));
  }
  
  步骤4:建立delegate实例,传入欲调用的方法名,要使用delegate类型必须建立他的实例,一个实例代表了一个方法的引用(可以这样说)
  
  delegate实例定义的形式:
  XXX(代表你定义的某个delegate类型的名称) 实例名(假设是实例A) = new XXX([欲调用的方法名(假设是方法A)]);
  意思是实例变量A指向方法A的程序代码段;
  如:
  
  static void Main(string[] args)
  {
  //
  // TODO: 在此处添加代码以启动应用程序
  System.Console.WriteLine("Hello World!");
  //建立第一个delegate的实例fpa,该实例代表方法aFunction;
  FunctionPointer fpa = new FunctionPointer(aFunction);
  //建立第一个delegate的实例fpa,该实例代表方法bFunction;
  FunctionPointer fpb = new FunctionPointer(bFunction);
  ......
  //
  }
  下面就可以运行整个程序了。
  如:
  static void Main(string[] args)
  {
  //
  ......
  //调用方法aFunction
  InvokeMethod(fpa);
  //调用方法bFunction
  InvokeMethod(fpb);
  //
  }
  
  输出结果: aFunction say I'm storm97
  bFunction say I'm storm97
上一篇:跟你分享—— .Net项目制作安装程序 人气:714
下一篇:介绍——用户认证管理设计方案 人气:790
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐