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

本文介绍了C#中的委托概念,包括委托的声明与使用方法。通过示例代码详细展示了如何创建委托类型、实例化委托对象,并将方法链接到委托上进行调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、委托的简介

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博客 ” ,链接:http://blog.itpub.net/8781179/viewspace-924830/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8781179/viewspace-924830/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值