c#委托理解复习

原创 2016年08月28日 20:18:11
c#中委托非常类似于c++中的函数指针,就是定义一个函数后把这个函数的执行交给其他'人'去调用
using System;
class Test
{
    delegate double sum(double a, double b);  //声明一个委托
    double add(double a, double b)  //定义两个函数
    {
        return a + b;
    }
    double dev(double a, double b)
    {
        return a - b;
    }
    public static void Main(string[] args)
    {
        Test test = new Test();
        sum s;  //定义一个委托
        s = test.add;  //将函数交给s
        Console.WriteLine(s(1.0, 2.0));  //调用
        s = test.dev;
        Console.WriteLine(s(1.0, 2.0));
        
    }
}


但是同c++所不同的是委托可以使用+=,-=来批量执行一些函数如下例子
using System;
class A
{
    public int stopA()
    {
        Console.WriteLine("sotpa");
        return 10;
        
    }
}
class B
{
    public int stopB()
    {
        Console.WriteLine("stopb");
        return 10;
    }
}
class C
{
    public int stopC()
    {
        Console.WriteLine("stopc");
        return 1000;
    }
}


class Contorller
{
   public A a;
   public  B b;
   public  C c;
   delegate int show();
   private show stop;


   public void Init()
   {
       stop += a.stopA;  //添加指向
       stop += b.stopB;
       //stop += c.stopC;
       stop += (() => { c.stopC(); return 5000; }); //运用lambda表达式产生一个匿名的方法
       stop -= a.stopA;  //去除指向
   }
   public void controlstop()
   {
       Init();
       Console.WriteLine(stop());
   }
}


class Test
{
    public static void Main()
    {
        A a = new A();
        B b = new B();
        C c = new C();
        Contorller con = new Contorller();
        con.a = a;
        con.b = b;
        con.c = c;
        con.controlstop();
    }
}

快速理解C#中的委托与事件

以下内容只是个人理解,仅供参考。 什么是委托? 先看最简单的委托例子: namespace DelegateTest { public delegate void MessageDele...
  • Wiiix
  • Wiiix
  • 2016年05月20日 20:02
  • 5610

深入理解C#委托及原理

一、委托 设想,如果我们写了一个厨师做菜方法用来做菜,里面有 拿菜、切菜、配菜、炒菜 四个环节,但编写此方法代码的人想让 配菜 这个环节让调用方法的人实现,换句话说,就是想在方法被调用时接收代码 作...
  • farmwang
  • farmwang
  • 2016年06月19日 09:17
  • 1665

C#中委托的理解和使用

C#中有一种特殊的回调(callback)函数叫委托,委托是一种定义方法签名的类型,当需要把方法传递给其他方法时就要用到委托。     我们常常习惯把数据作为参数传递给方法,而当某个方法执行的操作不...
  • wu5101608
  • wu5101608
  • 2013年12月27日 06:38
  • 672

C#中委托的理解(方便Java的童孩们理解)

C#中委托的理解(方便Java的童孩们理解)   定义:委托即Java中的抽象方法,是一个没有实现的方法,没有方法体。要在程序运行的时候才知道它的具体运行的是哪一部分代码(这个定义是从Java角度理解...
  • u012465377
  • u012465377
  • 2013年10月24日 21:22
  • 669

C#中的lambda表达式与委托的关系

通过本文的例子就可以理解委托与lambda表达式的关系
  • wangpeng2011314
  • wangpeng2011314
  • 2017年02月26日 20:38
  • 251

C#自定义控件-事件-委托

在组件编程中对事件的理解是十分重要的,C# 中的“事件”是当对象发生某些有趣的事情时,类向该类的客户提供通知的一种方法。与事件联系最为紧密的,个人认为是委托.委托可以将方法引用封装在委托对象内。为了弄...
  • sxausgyy
  • sxausgyy
  • 2013年12月02日 23:01
  • 1305

C# Lambda表达式理解

先来看两段C#代码,来比较Lambda表达式: Thread t = new Thread(() =>   {   AddIt AddDelegate = new AddIt(AddItem);  ...
  • lishimin1012
  • lishimin1012
  • 2014年07月17日 14:35
  • 1390

快速理解C#高级概念(一) Delegate委托

做.NET开发很久,最近重新温习《C#高级编程》一书。发现很多曾经似懂非懂的问题,其实也是能够慢慢钻研慢慢理解的。 所以,打算开写《C#高级编程系列》博文。其中会借鉴《C#高级编程》一书的概念,也会...
  • chamychen
  • chamychen
  • 2012年12月19日 17:40
  • 24852

c#中委托的使用

这篇文章主要介绍了C#中委托的用法,包括委托的功能、定义及用法示例,需要的朋友可以参考下 本文以实例形式简单介绍了C#中委托的用法,是深入学习C#程序设计所必须掌握的重要技巧。现以教程形式...
  • ycl295644
  • ycl295644
  • 2015年06月08日 15:20
  • 1877

c# 委托与多线程

很多时候写windows程序都需要结合多线程,在.net中用如下得代码来创建并启动一个新的线程。public void ThreadProc();Thread thread = new Thread(...
  • lekelaier_msn
  • lekelaier_msn
  • 2007年06月24日 09:51
  • 6490
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c#委托理解复习
举报原因:
原因补充:

(最多只允许输入30个字)