C#里的委托和事件实现Observer

来源:网络整理 责任编辑:栏目编辑 发表时间:2013-07-01 21:41 点击:
一、委托的简介

1、委托的声明:

<access modifier> delegate <returnType> 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 参数的委托



二、事件的简介

C# 中的“事件”是当对象发生某些事情时,类向该类的客
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 用C#制作屏幕捕获程序
    • .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上
    • 遍历ArrayList易犯错误
    • C#对XML操作:一个处理XML文件的类(1)
    • .NET简谈反射(动态调用)
    • 使用C#编写LED样式时钟控件
    • DataList嵌套问题 如何删除内层子DataList的记录
    • 怎样用C#实现完整文档打印功能
    • .NET简谈自定义事务资源管理器
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1