ITPub博客

首页 > 应用开发 > IT综合 > C#里的委托和事件实现Observer之一(转)

C#里的委托和事件实现Observer之一(转)

原创 IT综合 作者:BugRobber 时间:2007-07-06 21:45:51 0 删除 编辑
一、委托的简介

1、委托的声明:

delegate HandlerName ([parameters])

例如:

public delegate void PrintHandler(string str);



委托声明定义了一种类型,它用一组特定的参数以及返回类型来封装方法。对于静态方法,委托对象封装要调用的方法。对于实例方法,委托对象同时封装一个实例和该实例上的一个方法。如果您有一个委托对象和一组适当的参数,则可以用这些参数调用该委托。



2、委托的使用:

using System;



public class MyClass

{

public static void Main()

{

PrintStr myPrinter = new PrintStr();

PrintHandler myHandler = null;

myHandler += new PrintHandler(myPrinter.CallPrint); // 将委托链接到方法,来实例化委托

if(myHandler!=null)

myHandler("Hello World!"); // 调用委托,相当于匿名调用委托所链接的方法

Console.Read();

}

}



public delegate void PrintHandler(string str); // 声明委托类型



public class PrintStr

{

public void CallPrint(string input)

{

Console.WriteLine(input);

}

}






在C#中使用委托方法:

· 创建委托所使用的方法必须和委托声明相一致(参数列表、返回值都一致)

· 利用 +=、-=来进行委托的链接、取消链接或直接使用Delegate.Combine和Delegate.Remove方法来实现

· 可以使用MulticastDelegate的实例方法GetInvocationList()来获取委托链中所有的委托

· 不能撰写包含 out 参数的委托
[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8781179/viewspace-924830/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    372
  • 访问量
    200904