C#中 "()=>"表示什么意思

如题所述

你好.这是lambda表达式.我曾经对此研究了一段时间.

简明来说,你首先应该理解匿名函数,事件和委托的各种演变和用法.委托是一个特殊的类,可以传递方法引用,而事件则相当于委托类型的属性.而对事件赋值其实就是对事件的注册和注销.

以上是我总结的基础知识.

下面是委托的演变.

使用委托则需要这样写

你有一个委托类型:

delegate void MessageHandle(object sender, DataType pam);




有一个和这个委托同方法签名的方法:

private void SendMsg(object sender, DataType e)
{
//委托代理的方法
}




那么在你方法内部使用时候请注意.net Framework的几个版本演变:

2.0前 使用委托函数:

MessageHandle AcceptClient = new MessageHandle(SendMsg);



2.0 为了简化SendMsg方法,使用匿名函数形式表达,这样就不用再另外写一个方法了:

MessageHandle AcceptClient = new MessageHandle(delegate(object sender, DataType pam) { });



在之后,则采用lambda表达式,进行表示代理函数:

MessageHandle AcceptClient = new MessageHandle((sender,parm) => { });



如此,我们叫lambda表达式为语法糖,但是形式上更加简洁优雅.

(以上为原创)

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-10-08
计算机鞭策语言
Lambda 表达式 Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。
所有 Lambda 表达式都使用 Lambda 运算符 =>;,该运算符读为“goes to”。该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。Lambda 表达式 x => x * x 读作“x goes to x times x”。可以将此表达式分配给委托类型,如下所示:
delegate int del(int i);del myDelegate = x => x * x;int j = myDelegate⑸; //j = 25
创建表达式目录树类型
复制
using System.Linq.Expressions;// ...Expression<del> = x => x * x;
=> 运算符具有与赋值运算符 (=) 相同的优先级,并且是右结合运算符。
Lambda 用在基于方法的 LINQ 查询中,作为诸如Where和 Where 等标准查询运算符方法的参数。
使用基于方法的语法在 Enumerable 类中调用 Where 方法时(像在 LINQ to Objects 和 LINQ to XML 中那样),参数是委托类型 System.Func<T,TResult>;。使用 Lambda 表达式创建委托最为方便。例如,当您在 System.Linq.Queryable 类中调用相同的方法时(像在 LINQ to SQL 中那样),则参数类型是System.Linq.Expressions.Expression<Func>;,其中 Func 是包含至多五个输入参数的任何 Func 委托。同样,Lambda 表达式只是一种用于构造表达式目录树的非常简练的方式。尽管事实上通过 Lambda 创建的对象的类型是不同的,但 Lambda 使得Where调用看起来类似。
在前面的示例中,请注意委托签名具有一个 int 类型的隐式类型输入参数,并返回 int。可以将 Lambda 表达式转换为该类型的委托,因为该表达式也具有一个输入参数 (x),以及一个编译器可隐式转换为 int 类型的返回值。(以下几节中将对类型推理进行详细讨论。)使用输入参数 5 调用委托时,它将返回结果 25。
在is或as运算符的左侧不允许使用 Lambda。
带有标准查询运算符的 Lambda
--------------------------------------------------------------------------------
许多标准查询运算符都具有输入参数,其类型是泛型委托的 Func<T,TResult> 系列的其中之一。Func<T,TResult> 委托使用类型参数定义输入参数的数目和类型,以及委托的返回类型。Func 委托对于封装应用于一组源数据中每个元素的用户定义表达式非常有用。例如,假设有以下委托类型:
public delegate TResult Func<TArg0,TResult>(TArg0 arg0)
可以将委托实例化为 Func<int,bool> myFunc,其中 int 是输入参数,bool 是返回值。始终在最后一个类型参数中指定返回值。Func<int,string,bool> 定义包含两个输入参数(int 和 string)且返回类型为 bool 的委托。在调用下面的 Func 委托时,该委托将返回 true 或 false 以指示输入参数是否等于 5:
Func<int,bool> myFunc = x => x == 5;
bool result = myFunc⑷; // returns false of course
当参数类型为 Expression<Func> 时,您也可以提供 Lambda 表达式,例如在 System.Linq.Queryable 内定义的标准查询运算符中。如果指定 Expression<Func> 参数,Lambda 将编译为表达式树。
此处显示了一个标准查询运算符,Count 方法:
int[] numbers = { 5,4,1,3,9,8,6,7,2,0 };
int oddNumbers = numbers.Count(n => n % 2 == 1);
编译器可以推断输入参数的类型,或者您也可以显式指定该类型。这个特别的 Lambda 表达式将计算整数 (n) 的数量,这些整数除以 2 时余数为 1。
以下方法将生成一个序列,其中包含 numbers 数组中在 9 左边的所有元素,因为 9 是序列中不满足条件的第一个数字:
var firstNumbersLessThan6 = numbers.TakeWhile(n => n < 6);
此示例演示如何通过将输入参数括在括号中来指定多个输入参数。该方法将返回数字数组中的所有元素,直至遇到一个值小于其位置的数字为止。不要将 Lambda 运算符 (=>) 与大于等于运算符 (>=) 混淆。
var firstSmallNumbers = numbers.TakeWhile((n,index) => n >= index);
Lambda 中的类型推理
--------------------------------------------------------------------------------
在编写 Lambda 时,通常不必为输入参数指定类型,因为编译器可以根据 Lambda 主体、基础委托类型以及 C# 语言规范中描述的其他因素推断类型。对于大多数标准查询运算符,第一个输入是源序列中的元素的类型。因此,如果要查询 IEnumerable<Customer>;,则输入变量将被推断为 Customer 对象,这意味着您可以访问其方法和属性:
customers.Where(c => c.City == "London");
Lambda 的一般规则如下:
Lambda 包含的参数数量必须与委托类型包含的参数数量相同。
Lambda 中的每个输入参数必须都能够隐式转换为其对应的委托参数。
Lambda 的返回值(如果有)必须能够隐式转换为委托的返回类型。
请注意,Lambda 表达式本身没有类型,因为常规类型系统没有“Lambda 表达式”这一内部概念。但是,有时会不正式地论及 Lambda 表达式的“类型”。在这些情况下,类型是指委托类型或 Lambda 表达式所转换为的 Expression 类型。
python 中的 lambda
数字的平方
>>> f = (lambda x: x + 2)
>>> print(f(5))
7本回答被提问者采纳
第2个回答  2013-04-26
你是说的委托吧?
类似于

a.xxx( ()=>{} );

这是lambda表达式,你可以搜索 一下
C# lambda
第3个回答  2013-04-26
亲,搜下lambda表达式,你就能大致清楚了。

C#中() =>是什么意思
这是NET3.0以后的新特性 Lambda表达式 ,“Lambda 表达式”是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象,是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。

c#中(=>)是什么意思?
1、c#中(=>)是Lambda表达式。英文读“goes to”。2、“=>” 标记称作 lambda 运算符。该标记在 lambda 表达式中用来将左侧的输入变量与右侧的 lambda 体分离。3、Lambda 表达式是与匿名方法类似的内联表达式,但更加灵活;5、在以方法语法表示的 LINQ 查询中广泛使用了 Lambda 表达式。6、Linq中有...

C# 中_=>是什么意思?
Lambda 表达式:用下划线_表示不用的参数(省略名称)。=>后面表示函数体。

C#中=>是什么意思?
C语言中“=>”的意思:lambda表达式,表示一个匿名函数,=>前面的是参数,后面的是函数体。你可以把它当作一个函数。举例说明:Func<int, int, int> Add = (x, y) => x + y;Console.WriteLine(Add(2, 3)); \/\/ 5

C# 等号大于号是什么意思,就是=>
它是一个数学符号,表示由该符号前面的那个推出后面的那个。例如:a>b. b>c => a>c 表示由a>b b>c可以推出a>c 若等号两边都有箭头(例:<=>),就表示该符号前后两部分可以相互推出。

C# 中用到的 “=>” 具体是指什么东西。
delegate int del(int i);static void Main(string[] args){ del myDelegate = x => x * x;int j = myDelegate(5); \/\/j = 25 } Lambda表达式经常用在LINQ中,你可以看一下《C#开发实战宝典》或者《C#开发实战1200例(第2卷)》,里面有LINQ相关的详细讲解及很多实例。

c#中"=>"的
C#中的""=>"符号被称为lambda运算符,它是lambda表达式中不可或缺的一部分。Lambda表达式是一种简洁的内联表示方式,类似于匿名方法,但更为灵活,常被用于LINQ查询的语法中。例如,当我们有这样一个字符串数组:string[] words = { "cherry", "apple", "blueberry" };我们可以通过lambda表达式来...

c#中的 符号=> 代表什么?
=> 标记称作 lambda 运算符。该标记在 lambda 表达式中用来将左侧的输入变量与右侧的 lambda 体分离。Lambda 表达式是与匿名方法类似的内联表达式,但更加灵活;在以方法语法表示的 LINQ 查询中广泛使用了 Lambda 表达式。=> 运算符可解读为“goes to”。在上一示例中,该表达式可解读为“Min w goes ...

c# "=>"什么意思
Lambda语句中用到的。意思为「移至」,符号前面是声明变量,后面是表达式。现在Linq表达式就是基于它发展起来的,调用起来结构简单。 想了解的话百度一下Lambda就可以了。C#里面是可以识别这些语句的,不过都是在方法参数里面,作为一个匿名委托,数组里面经常用到。

>在c#中表示什么意思?
额。如果只有一个大于号的话就是 大于的意喽。比如 if (a > b)比较运算符返回的值是bool类型的。如果不是单一的大于号,那就有很多了 >> ,=> ,> = ...看具体用在什么地方了,=>这个感觉是赋值一样的东西。我在list的find.all方法中用过。看你具体遇到的是哪一种了。

相似回答