学习笔记--委托,Lambda表达式和事件(1)

原创 2015年07月06日 21:31:23

一,委托

1.委托是寻址方法的.NET版本,是类型安全的类,定义了返回的类型和参数的类型,包含对一个或多个方法的引用。

委托是一种特殊类型的对象,是因为委托包含一个或多方法的地址。


2.声明委托

(1)没有参数和返回值的委托

    delegate  void PrintFunction();    //定义一个没有返回值和参数的委托类型


完整Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace DelegateDemo
{
    //定义一个没有返回值和参数的委托类型
    delegate  void PrintFunction();

    public  class Test
    {
        //一个实例的方法
        public void Print1()
        {
            Console.WriteLine("Print1---Instance");
        }

        //一个静态的方法
        public static void Print2()
        {
            Console.WriteLine("print2----Static");
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
            Test tt = new Test(); //创建一个测试类的实例
            PrintFunction pf; //创建一个空的委托
            pf = tt.Print1; //实例化并初始化该委托


            //添加3个方法到委托上
            pf += Test.Print2;
            pf += tt.Print1;
            pf += Test.Print2;


            //委托包含4个方法
            if (null != pf) //确认委托有方法

                pf(); //调用委托
            else

                Console.WriteLine("Delegate is empty! ");

            Console.ReadLine();
        }
    }
}


输出结果如下:
//****************************
Print1---Instance
print2----Static
Print1---Instance
print2----Static
//****************************


委托调用实例方法和静态方法可以使用 “+” 来添加方法。

相关文章推荐

《C#高级编程》【第八章】委托、lambda表达式和事件 -- 学习笔记

委托是一个神奇的东西。委托的出现,使得方法可以作为参数进行传递。其中我们接触最多的应该就是通用库类。通用库类,正是由于这种机制才实现了其的通用性。 一、普通委托         委托类由关键字dele...

委托、事件、Lambda表达式Demo

  • 2015年03月12日 18:07
  • 58KB
  • 下载

pp看书笔记---C#高级编程第九版 第八章 【委托、Lambda表达式和事件】

一、文章脉络二、需要掌握 委托、Func、Action的使用 简单的Lambda的使用 EventHandler + WeakEventManager的使用 三、阐述自己学习后的见解 委托 原理: ...

C sharp 泛型 lambda表达式学习笔记

C# 泛型 (Generics)编译机制 第一轮编译时,编译器只为Stack(栈算法)类型产生“泛型版”的IL代码与元数据-----并不进行泛型类型的实例化,T在中间只充当占位符 
JIT编译时,...

C#学习笔记(三)—–C#高级特性:Lambda表达式

Lambda表达式Lambda表达式是写在委托实例上的匿名方法。编译器立即将Lambda表达式转换成下面两种形式中的一种: ①委托实例 ②Expression类型的表达式树,该表达式树将Lambd...

C++11学习笔记之Lambda表达式

写在前面有人说C++11的诸多新特性让C++11变成了一种新的语言,也许吧,在我心里,C++永远是C++,不管它怎么变。lambda表达式先来看看lambda表达式的完整的结构吧。[ capture ...

Python学习笔记(十二):lambda表达式与函数式编程

以Mark Lutz著的《Python学习手册》为教程,每天花1个小时左右时间学习,争取两周完成。 --- 写在前面的话 2013-7-22 21:00 学习笔记 1,lambda的一般形式是关键字l...

Java学习笔记——Lambda表达式

Lambda表达式是java 8中包含的重要功能之一。Lambda表达式用于编写该接口的简洁代码,其中包含一个方法即功能界面。Lambda 表达式也用于以简单的方式迭代收集。对于单个方法接口,无论我们...

C++11 学习笔记 lambda表达式

lambda表达式是C++11最重要也最常用的一个特性之一。lambda来源于函数式编程的概念,也是现代编程语言的一个特点。   一.函数式编程简介 定义:简单说,“函数式编程”是一种“编程范式...
  • fjzpdkf
  • fjzpdkf
  • 2015年12月10日 14:20
  • 10578

Java8学习笔记 — 【Lambda表达式】

1、Lambda表达式介绍 Lambda表达式是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样传输),这样就可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习笔记--委托,Lambda表达式和事件(1)
举报原因:
原因补充:

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