委托

1、概念:

委托可以看成是一个函数的“容器”,将某一具体的函数“装入”后,就可以把它当成函数一样使用。委托变量可看成是一种类型安全的函数指针,它只能接收符合其要求的函数地址。

2、定义方法:delegate关键字。例:

    public delegate int MyDele(int a, int b);

3、利用委托调用函数

1)首先定义一个类,里面写几个方法:

    class Class1
{
public int Jiafa(int a, int b)
{
return a + b;
}
public int Jianfa(int a, int b)
{
return a - b;
}
}

2)通过委托调用函数:

MyDele m ; //定义一个已有委托类型的变量
m = new Class1().Jiafa; //给上面的变量赋值
Console.WriteLine(m(,));//结果为3
m = new Class1().Jianfa; Console.WriteLine(m(,));//结果为-1

4、注意:一个委托类型的变量,可以引用任何一个满足其要求的函数。

5、委托的扩展:

1)特殊的委托泛型集合,匿名委托

Func<string, string> myfunc = new Class1().ReturnString;//输入string,输出string
Console.WriteLine(myfunc("张三"));

2)直接写方法

Func<string, string> newfunc = delegate(string s)
{
return s + "world!";
};
Console.WriteLine(newfunc("李四"));

3)lambda方法简易版1、用s=>代替delegate(string s)

Func<string, string> newfunc1 = s=>
{
return s + "world!";
};

4)lambda方法简易版2、两个参数

Func<string, string,string> newfunc2 = (s1,s2) =>
{
return s1 + "world!"+s2;
};

5)lambda方法简易版2、去掉大括号,直接写方法

Func<string, string,string> newfunc3 = (s1, s2) =>s1+"world!"+s2;             
Console.ReadLine();

7、面向对象以及winform的简单运用(委托)的更多相关文章

  1. 1、面向对象以及winform的简单运用(开篇)

    面向对象概述: 要学习好面向对象,我们应该从三个问题入手: 1.什么是面向对象? 2.为什么要面向对象? 3.该怎么面向对象? 面向对象,首先要有一个对象,那么对象是什么呢? 对象的定义是人们要进行研 ...

  2. 8、面向对象以及winform的简单运用(事件与winform入门)

    事件 Visual studio中对可视化窗体控件的事件处理机理: 所有的.NET Framework可视化窗体控件的预定义事件,都会某一对应的“事件名+Handler”委托类型的变量.与此事件相关的 ...

  3. 3、面向对象以及winform的简单运用(类的初步认识)

    什么是类? “类”是面向对象编程的基本单元,一个类一般包含两种成员:字段和方法——即变量和函数. 例: //字段或变量的定义 public int age; //方法或函数的定义 public int ...

  4. 10、面向对象以及winform的简单运用(isMdicontainer的设置、timer控件进行倒计时的制作)

    IsMdicontainer的设置 这是对于整个窗体的设置,将一个窗体的IsMdicontainer设置为true之后,再打开新窗体便可以让新窗体被父容器包括在内. 操作方法: 1)先建立一个子窗体C ...

  5. 2、面向对象以及winform的简单运用(面向对象的四大基本特性)

    面向对象的四大基本特性 面向对象的核心概念就是封装.抽象.继承.多态这四大基本特性,在这里先解释一下它们的定义: 封装:是一种隐藏信息的特性.找到变化并且把它封装起来,你就可以在不影响其它部分的情况下 ...

  6. 9、面向对象以及winform的简单运用(输入输出流、图像的上传和读取)

    一.输入输出流 1.概念: 输入输出流主要用于保存.读取文件,其内容保存在内存中. 2.使用方法: using System.IO; //System.IO 命名空间包含允许读写文件和数据流的类型以及 ...

  7. 6、面向对象以及winform的简单运用(抽象基类与接口)

    抽象类与抽象方法 1.书写规范: 在类前面加上abstract关键字,就成为了抽象类:在一个方法前面加上abstract关键字,就成为了抽象方法(抽象方法不能有实现方法,直接在后面加分号) 例: ab ...

  8. 5、面向对象以及winform的简单运用(方法重载、隐藏、重写与虚方法)

    方法的重载: 规定一个方法可以具有不同的实现,但方法的名称是相同的.如: //同样是Man这个方法 public int Man(int age,int name) { …… } //重载 publi ...

  9. 4、面向对象以及winform的简单运用(继承与多态、命名空间与类库)

    继承 继承既子类与父类之间的关系.子类是父类的一种特例,子类拥有父类所没有的功能. 子类与父类之间的相互赋值——例: Parent p; Son c = new Son(); p = c; //正确, ...

随机推荐

  1. Python pass语句作用与用法

    Python中的pass语句作用是什么?表示它不做任何事情,一般用做占位语句.pass语句具体作用及使用方法,我们往下看. pass语句在函数中的作用 当你在编写一个程序时,执行语句部分思路还没有完成 ...

  2. Climbing Stairs

    Climbing Stairs https://leetcode.com/problems/climbing-stairs/ You are climbing a stair case. It tak ...

  3. MVC+AjaxFileUpload文件上传

    来源:微信公众号CodeL 本次给大家分享的是ajaxfileupload文件上传插件,百度一大堆功能超炫的文件上传插件,为什么我们会选择这个插件呢? 原因是在此之前,我们尝试使用过很多基于flash ...

  4. cni 添加网络 流程分析

    cnitool: Add or remove network interfaces from a network namespace cnitool add <net> <netns ...

  5. 边工作边刷题:70天一遍leetcode: day 89-1

    Smallest Rectangle Enclosing Black Pixels 要点:记题:这题有两个限制条件:所有black pixel是连通的(所以可以用binary search)以及给了一 ...

  6. 2014 Super Training #8 B Consecutive Blocks --排序+贪心

    当时不知道怎么下手,后来一看原来就是排个序然后乱搞就行了. 解法不想写了,可见:http://blog.csdn.net/u013368721/article/details/28071241 其实就 ...

  7. java 15-1 Collection集合的概述以及小功能介绍

     集合的由来:  我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储.  而要想存储多个对象,就不能是一个基本的变量,而应 ...

  8. mybatis-config.xml详解

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...

  9. 22Spring_JdbcTemplatem模板工具类的使用——使用外部属性文件来配置(properties)

    前一篇文章写得是xml文件来配置数据库连接的.但是为了方便,我们实际中采用的是properties文件的方式来配置数据库的.修改properties 文件 会比 修改 xml文件 方便. 做法是: 将 ...

  10. android中scrollTo和scrollBy的理解

    protected   int  mScrollX;    //该视图内容相当于视图起始坐标的偏移量   , X轴 方向 protected   int  mScrollY;    //该视图内容相当 ...