委托:就是一个方法的类型,下面3个调用情况来详细熟悉一下:

1.调用组合委托

    //委托:就是一个方法的类型
public delegate int TestDelegateStr();
public delegate string TestDelegateInt(int a); public class 委托
{
//实例化委托:需要一个方法来实例化
public static TestDelegateStr tdstr1;
public static TestDelegateInt tdint ; public static void main()
{
tdstr1 = testfunctionStr;
tdstr1 = tdstr1 + testfunction;
int result = tdstr1(); //调用组合委托
Console.WriteLine("result" + result.ToString()); tdint = testfunctionInt;
tdint();
Console.ReadKey();
} public static int testfunction()
{
Console.WriteLine("");
return ;
}
public static int testfunctionStr()
{
Console.WriteLine("");
return ;
}
public static string testfunctionInt(int a)
{
Console.WriteLine("testfunction3");
return " test";
}
}

2.委托之前的赋值:

        public delegate int CalculateDelegate(int a, int b);
public void main()
{
CalculateDelegate cal;
//让用户输入两个参数x和y
//如果x>y,输出x-y
//如果x<=y,输出x+y
int x = ; int y = ;
if (x > y)
{
cal = Minus;
}
else
{
cal = add;
}
int result= cal(x, y);
Console.WriteLine(result.ToString());
} public int add(int a, int b)
{
return a + b;
}
public int Minus(int a, int b)
{
return a - b;
}
}

3.委托delegate和Lambda之前的切换写法:

    public class 委托3
{
public delegate int CalculateDelegate(int a, int b);
public delegate int CalculateDelegate2(int a);
public void main()
{
CalculateDelegate cal;
CalculateDelegate2 cal2;
//让用户输入两个参数x和y
//如果x>y,输出x-y
//如果x<=y,输出x+y
int x = ; int y = ;
if (x > y)
{
cal = delegate (int a, int b) { return a - b; }; //匿名方法
}
else
{
//cal = delegate (int a, int b) { return a + b; };
cal = (int a, int b) => { return a + b; }; //Lambda和上句等价
}
//简化1:如果Lambda方法体中只有一个返回值,那么大括号和return可以省略
cal = (int a, int b) => a + b; //简化2:在Lambda的参数列表中,参数类型可以省略
cal = (a, b) => a + b; //简化3:如果在Lambda参数列表中只有一个参数,那么参数的括号可以省略
cal2 = a => a * a; int result= cal(x, y);
Console.WriteLine(result.ToString());
} }

4.使用委托实现异步执行

C# 委托delegate的基本用法的更多相关文章

  1. Unity 项目中委托Delegate用法案例

    Unity中Delegate的用法场景 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar - ...

  2. C# 委托Delegate(一) 基础介绍&用法

    本文是根据书本&网络 前人总结的. 1. 前言 定义&介绍: 委托Delegate是一个类,定义了方法的类型, 使得可以将方法当做另一个方法的参数来进行传递,这种将方法动态地赋给参数的 ...

  3. 关于C# 委托(delegate)与事件(event)的用法及事例

    C#中的委托和事件对于新手可能会有一点难理解,所以先从一个小例子入手,以便能更好的理解其如何使用.有一个学生每天定闹钟在早上6点起床,所以当每天早上6点的时候,闹钟就会响起来,从而学生才会按时起床. ...

  4. C# 代理/委托 Delegate

    本文转载自努力,努力,努力 1. 委托的定义:委托是函数的封装,它代表一"类"函数.他们都符合一定的签名:拥有相同的参数列表,返回值类型.同时,委托也可以看成是对函数的抽象,是函数 ...

  5. [.NET] C# 知识回顾 - 委托 delegate (续)

    C# 知识回顾 - 委托 delegate (续) [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6046171.html 序 上篇<C# 知识回 ...

  6. [C#] C# 知识回顾 - 委托 delegate

    C# 知识回顾 - 委托 delegate [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6031892.html 目录 What's 委托 委托的属性 ...

  7. 为什么不能把委托(delegate)放在一个接口(interface)当中?

    stackoverflow上有人问,为什么不能把委托放在一个接口当中? 投票最多的第一个答案第一句话说,“A Delegate is just another type, so you don't g ...

  8. c# 委托 delegate

    委托是一种存储函数引用的类型,在事件和事件的处理时有重要的用途 通俗的说,委托是一个可以引用方法的类型,当创建一个委托,也就创建一个引用方法的变量,进而就可以调用那个方法,即委托可以调用它所指的方法. ...

  9. 理解委托(delegate)及为什么要使用委托

    理解委托(delegate)及为什么要使用委托 委托:是一种定义方法签名的类型. 当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联. 您可以通过委托实例调用方法. 上述为官方说法,理解起来 ...

随机推荐

  1. Upload-Labs 实验操作记录

    0x01 安装 下载:https://github.com/c0ny1/upload-labs 环境:简单搭建phpstudy环境即可,记得在upload-labs根目录下创建该文件夹 0x02 文件 ...

  2. Python 如何移除旧的版本特性,如何迎接新的特性?

    2020 年 4 月 20 日,Python 2 的最后一个版本 2.7.18 发布了,这意味着 Python 2 是真正的 EOL(end of life)了,一个时代终于落幕了. Python 2 ...

  3. ubuntu16.04-交叉编译-SeetaFaceEngine-master

    0.前言 在要移植opecv和SeetaFaceEngine-master到ARM板子上运行的所有步骤之前,有几点需要注意的: 查看板子运行的Kernel版本 交叉编译工具链的gcc版本,关键就是工具 ...

  4. [Python] bytes 转换成 str

    b = b"example" # bytes object s = "example" # str object sb = bytes(s, encoding ...

  5. [Qt] QlineEdit 限制输入,例如只能输入整数

    要注意validor的作用域,如果超出作用域,则会无效.例如下面的代码,在UI的类的构造函数里.所以要new一个validtor. QIntValidator *intValidator = new ...

  6. mysql之浅谈主外键

    主键(PRIMARY KEY) 主键在一个数据表中只能有唯一的一个,约束当前字段的值不能重复,且非空保证数据的完整性,也可以当做当前数据表的标识符用来查询(当做索引,唯一性索引的一种) 创建带主键的表 ...

  7. 【Linux题目】第七关

    1. 如果想修改开机内核参数,应该修改哪个文件? A. /dev/sda1 B. /etc/fstab 磁盘自动挂载的文件 C. /boot/grub/grub.conf D. /etc/rc.loc ...

  8. 【Linux常见命令】seq命令

    seq - print a sequence of numbers seq命令用于以指定增量从首数开始打印数字到尾数,即产生从某个数到另外一个数之间的所有整数,并且可以对整数的格式.宽度.分割符号进行 ...

  9. CHIL-SQL-DELETE 语句

    DELETE 语句 DELETE 语句用于删除表中的行. 语法 DELETE FROM 表名称 WHERE 列名称 = 值 Person: LastName FirstName Address Cit ...

  10. 从实践出发:微服务布道师告诉你Spring Cloud与Boot他如何选择

    背景 随着公司业务量的飞速发展,平台面临的挑战已经远远大于业务,需求量不断增加,技术人员数量增加,面临的复杂度也大大增加.在这个背景下,平台的技术架构也完成了从传统的单体应用到微服务化的演进. 系统架 ...