C# delegate event func action 匿名方法 lambda表达式
delegate event action func 匿名方法 lambda表达式
delegate类似c++的函数指针,但是是类型安全的,可以指向多个函数,
public delegate void DelegateMethod(); //声明了一个Delegate Type
public DelegateMethod delegateMethod; //声明了一个Delegate对象
var test = new TestDelegate(); test.delegateMethod = new TestDelegate.DelegateMethod(test.NonStaticMethod);
test.delegateMethod += new TestDelegate.DelegateMethod(TestDelegate.StaticMethod); event用来修饰delegate,不加event的委托就是一个普通的委托,可以直接通过委托调用,加了event的委托是一个事件,只能通过类的成员函数调用。
action是没有返回值的委托,Action 表示无参,无返回值的委托, Action<int,string> 表示有传入参数int,string无返回值的委托。
func指有返回值的泛型委托,Func<int> 表示无参,返回值为int的委托,Func<object,string,int> 表示传入参数为object, string 返回值为int的委托
predicate 是返回bool型的泛型委托
匿名方法,不需要使用特定的方法,简化代码,
- host.Opened += delegate(object sender, EventArgs e)
- {
- Console.WriteLine("Service Opened.");
- };
不带参数和返回值的匿名方法,可以被具有任何形式签名的委托所指代,如果有一个重载的方法,参数为两种类型的委托,调用这个方法时如果使用不带参数和返回值的匿名方法会编译错误
- static void Output(IntDelegate id)
- {
- }
- static void Output(StringDelegate sd)
- {
- }
- static void Main(string[] args)
- {
- Output(delegate { });
- }
lambda表达式也是一种匿名方法,(参数列表)=>表达式或语句块,在编写Lambda表达式时,可以忽略参数的类型,因为编译器能够根据上下文直接推断参数的类型,
- (x, y) => x * y //多参数,隐式类型=> 表达式
- x => x * 5 //单参数, 隐式类型=>表达式
- x => { return x * 5; } //单参数,隐式类型=>语句块
- (int x) => x * 5 //单参数,显式类型=>表达式
- (int x) => { return x * 5; } //单参数,显式类型=>语句块
- () => Console.WriteLine() //无参数
C# delegate event func action 匿名方法 lambda表达式的更多相关文章
- 18、(番外)匿名方法+lambda表达式
概念了解: 1.什么是匿名委托(匿名方法的简单介绍.为什么要用匿名方法) 2.匿名方法的[拉姆达表达式]方法定义 3.匿名方法的调用(匿名方法的参数传递.使用过程中需要注意什么) 什么是匿名方法? 匿 ...
- 委托delegate 泛型委托action<> 返回值泛型委托Func<> 匿名方法 lambda表达式 的理解
1.使用简单委托 namespace 简单委托 { class Program { //委托方法签名 delegate void MyBookDel(int a); //定义委托 static MyB ...
- C#多线程+委托+匿名方法+Lambda表达式
线程 下面是百度写的: 定义英文:Thread每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程.进程也可能是整个程序或者是部分程序的动态执行.线程是一组指令的集合,或者是程序的特殊段,它 ...
- 委托-异步调用-泛型委托-匿名方法-Lambda表达式-事件【转】
1. 委托 From: http://www.cnblogs.com/daxnet/archive/2008/11/08/1687014.html 类是对象的抽象,而委托则可以看成是函数的抽象.一个委 ...
- C#委托总结-匿名方法&Lambda表达式
1,匿名方法 匿名方法可以在声明委托变量时初始化表达式,语法如下 之前写过这么一段代码: delegate void MyDel(string value); class Program { void ...
- 匿名函数 =匿名方法+ lambda 表达式
匿名函数的定义和用途 匿名函数是一个"内联"语句或表达式,可在需要委托类型的任何地方使用. 可以使用匿名函数来初始化命名委托[无需取名字的委托],或传递命名委托(而不是命名委托类型 ...
- C# Func和匿名方法 简单使用
今天敲代码遇见一个问题,解决中用到了C#的Func和匿名方法,发现挺好用的 定义一个这样的方法可以避免重复写try catch 这里用到了Func<int,string> ,它其实就是一个 ...
- 【Unity|C#】基础篇(9)——匿名函数 / Lambda表达式
[学习资料] <C#图解教程>(第13章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu. ...
- c# 中的委托以及匿名方法lambda
1.委托的定义internal delegate int MyAddFunDe(int a,int b)2.匿名方法1)MyAddFunDe fun = delegate(int a,int b){ ...
随机推荐
- mkdir 命令详解
rmdir <man.linuxde.net> 作用: rmdir 命令用来创建目录,该命令创建由dirname 命名的目录.如果在目录名的前面没有添加任何路径名,则在当前目录下创建由d ...
- MySQL5.6中date和string的转换和比较
Conversion & Comparison, involving strings and dates in MySQL 5.6 我们有张表,表中有一个字段dpt_date,SQL类型为da ...
- Handwritten Parsers & Lexers in Go (翻译)
用go实现Parsers & Lexers 在当今网络应用和REST API的时代,编写解析器似乎是一种垂死的艺术.你可能会认为编写解析器是一个复杂的工作,只保留给编程语言设计师,但我想消除这 ...
- VS 2017 Web项目需要安装Sql Server 2012 Express LocalDB问题
最近在做mvc5的练习 ,结果到了数据库连接这一阶段就出现了问题,开始我以为<add name="MovieDBContext" connectionString=" ...
- S2 深入.NET和C#编程 三:使用集合组织相关数据
三:使用集合组织相关数据 集合概念: ArrayList:非常类似于数组,也有人称他为数组的列表.ArrayList可以动态维护,数组的容量是固定的 和数组类似,ArrayList中存储的是数据成为元 ...
- js介绍
---恢复内容开始--- js介绍 最近学习了js,那么我今天给大家介绍下js.希望对初学者有些帮助. js就是常说的JavaScript.JavaScript是目前世界上最流行的编程语言之一.这门语 ...
- HTTP结构
HTTP结构 转载请注明出处:HTTP结构简介 HTTP通信过程包括从客户端发往服务器的请求和服务器返回客户端的响应,这篇文章就简单的了解一下HTTP请求和响应的结构与协议本身的状态管理. 用户HTT ...
- entity framework学习
资源 Entity Framework技术导游系列开篇与热身
- CSS中水平居中的方法
居中是我们在css中经常遇到的问题,一般有水平居中.垂直居中.垂直水平居中这3种情况,那么今天首先就来对学习到的水平居中的方法做个总结笔记. css水平居中 text-align:center 它的效 ...
- Android的Environment.getExternalStorageState的使用
1.sd状态 sd状态 现象描述 /mnt/sdcard目录是否存在 canRead返回 canWrite返回 MEDIA_MOUNTED SD卡正常挂载 true true true MEDIA ...