什么是委托以及案例

using System;
using System.Collections.Generic;
using System.Text;
namespace Delegate
{
//定义委托,它定义了可以代表的方法的类型
public delegate void GreetingDelegate(string name);
class Program
{
private static void EnglishGreeting(string name)
{
Console.WriteLine("Morning, " + name);
}
private static void ChineseGreeting(string name)
{
Console.WriteLine("早上好, " + name);
}
//注意此方法,它接受一个GreetingDelegate类型的参数,该参数是返回值为空,参数为string类型的方法
private static void GreetPeople(string name, GreetingDelegate MakeGreeting)
{
MakeGreeting(name);
}
static void Main(string[] args)
{
GreetPeople("Jimmy Zhang", EnglishGreeting);
GreetPeople("张子阳", ChineseGreeting);
Console.ReadKey();
}
}
}

  委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。

详情进连接:http://baike.baidu.com/link?url=w31jH_nz5roSL25H_-NAdAIOHOdkC1ym_KD19leilwQXjEnZGC7WRCD6ryFzUyFjkVWiY7ZAW4Bzpl8l81g9Ra

时间: 2024-11-10 01:39:00

什么是委托以及案例的相关文章

关于js中的事件委托小案例

需求:页面上有一个按钮,和一个空的ul,要求点击按钮,会给ul中动态添加li元素,然后,点击动态添加的元素,在控制台上输出,这是第几个元素 <ul> </ul> <button>点击增加</button> var ul = document.querySelector('ul'); var btn = document.querySelector('button'); //动态添加元素 btn.addEventListener('click',functio

C#forUnity快速入门(连载15)_C#委托与事件

C# for Unity编程语言快速入门教程(连载15)_C#委托与事件 C#的委托(delegate)与事件(event)  其实不是一个容易理解的技术,而且很多C#书籍作者还经常把它与"观察者设计模式"(Observer模式)放在一起进行讨论(注:因为委托与事件是"Observer"设计模式的一种很好的实现方式),其实这就进一步增加了对于C#初学者的学习难度. 所以笔者打破常规,先从讲故事的方式,先来介绍"委托". 案例故事:"老板

C#高级------委托

namespace out_ref { //声明一个委托 public delegate void MyDelegate(); class Program { static void Main(string[] args) { MyDelegate mdl = Say; Do(mdl); Console.ReadKey(); } static void Do(MyDelegate mdl) { mdl(); } static void Say() { Console.WriteLine("哈哈&

.Net 委托 delegate 学习

一.什么是委托: 委托是寻址方法的.NET版本,使用委托可以将方法作为参数进行传递.委托是一种特殊类型的对象,其特殊之处在于委托中包含的只是一个活多个方法的地址,而不是数据. 二.使用委托: 关键字:delegate 1.声明: public delegate void DoNothing();//定义一个无返回值,无参数的委托 public delegate int GetNum(int i); //定义有一个返回值int ,参数int 的委托 2.创建方法: public static vo

程序集

什么是程序集? ---程序集是.net中的概念. ---.net中的dll与exe文件都是程序集.(exe与dll的区别?) ---程序集(Assembly).可以看做是一堆相关类打一个包,相当于Java中的jar包(*). 使用程序集的好处? --程序中只引用必须的程序集,减少程序的尺寸. ---程序集可以疯转一些代码,只提供必要的访问接口. 如何添加程序集的引用? ---添加路径.项目引用.GAC(全局程序集缓存) ---不能循环添加引用 (我们调用的类都是位于各个程序集中,如果调用的类没在

C#知识体系(二)用案例来理解委托与事件

上一篇博客讲到了LinQ和lambda的常用方法 还有很多我们未知但c#设计团队已经为我们封装好的类和方法.随着我们不断的熟悉C#语言,渐渐的就会接触到其他的知识点,委托.事件.反射.线程.同步,异步.IO.套接字...这些东西我们平常用到的不多,都是些概念性的东西,也许是因为不熟悉而可以回避了使用这些东西,不可否认的是 就算不用这些我们依然能想到问题的解决办法.但是几乎所有语言都会有这些概念,因为在某些场景它们能发挥不可思议的能力. 其实我到现在还是没有掌握委托和事件,在工作或者设计中也尽量回

c#委托案例和理解

以下采用员工玩游戏,老板扣工资的案例: class Boss { private int money = 20; public void RSalary(int wage) { Console.WriteLine("老板发现扣工资{0}¥,剩余{1}", money,wage-money); } } class Employment { //为了减少老板的工作,同时低耦合,使用委托代替老板工作 public delegate void PGHandler(int pay);//定义参数

类加载器深入理解和双亲委托模型的案例分析

类加载器深入理解和双亲委托模型的案例分析 我们知道类必须通过类加载器加载后,我们程序才可以使用.接下来我们就对类加载器进行分析,Java虚拟机的类加载器是如何加载类的.首先我们可以从ClassLoader的源码分析入手. ClassLoader 的源码分析 ClassLoader 的javadoc文档 javadoc文档是最权威的官方讲解,可以对ClassLoader有一个比较全面且正确的一个认知.下面是javadoc内容. A class loader is an object that is

委托案例1

namespace ClsLib //公共层 { public delegate void WriteTimeToDevDelegate();//定义类 } namespace ClsLib //公共层 { public class Class1 { public ClsLib.WriteTimeToDevDelegate WriteTime; //委托 public void DoSth() //公共方法 { Console.WriteLine("=======================