不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
Lambda表达式学习笔记
编辑:dnawo 日期:2011-08-11
什么是Lambda 表达式呢?我们先用一个简单的例子演示下:
可见,Lambda表达式是函数一种简写方式,它的标志性符号为=>,符号左侧为函数签名[1],右侧的表达式即为函数体[2],函数没有名字,所以称为匿名函数。
函数是匿名的,那怎么调用呢?显然得把它赋给一个变量,之后再进行调用,例如Javascript的匿名函数:
但是,.NET是强类型语言,那变量Compare应是什么类型的呢?.NET有什么类型可以做为函数的类型?对了,委托,看个例子:
真有意思,这样委托有好几种写法了,顺便做个总结。
1.NET Framework1.1,2.0,3.5中的委托
①.NET Framework1.1的委托
②.NET Framework2.0的委托(匿名委托)
③.NET Framework3.5的委托(Lambda)
2.补充说明
[1].当函数当且仅当只有一个签名时,可省略中括号;当可以根据上下文推演出签名类型时,签名类型也可以省略;
[2].当函数体有多条语句时,必须用大括号,并且不能省略return;
3.官方文档
@.Lambda 表达式:http://msdn.microsoft.com/zh-cn/library/bb397687(v=VS.90).aspx
复制内容到剪贴板 程序代码
//普通函数
bool Compare(int a, int b)
{
return a > b;
}
//改成Lambda表达式
(int a, int b) => a > b;
//简写为
(a, b) => a > b;
bool Compare(int a, int b)
{
return a > b;
}
//改成Lambda表达式
(int a, int b) => a > b;
//简写为
(a, b) => a > b;
可见,Lambda表达式是函数一种简写方式,它的标志性符号为=>,符号左侧为函数签名[1],右侧的表达式即为函数体[2],函数没有名字,所以称为匿名函数。
函数是匿名的,那怎么调用呢?显然得把它赋给一个变量,之后再进行调用,例如Javascript的匿名函数:
复制内容到剪贴板 程序代码
Compare = function(a, b)
{
return a > b;
}
alert(Compare(1, 2));
{
return a > b;
}
alert(Compare(1, 2));
但是,.NET是强类型语言,那变量Compare应是什么类型的呢?.NET有什么类型可以做为函数的类型?对了,委托,看个例子:
复制内容到剪贴板 程序代码
delegate bool CompareDelegate(int a, int b);
static void Main(string[] args)
{
CompareDelegate Compare = (a, b) => a > b;
Console.WriteLine(Compare(1, 2));
Console.ReadKey();
}
static void Main(string[] args)
{
CompareDelegate Compare = (a, b) => a > b;
Console.WriteLine(Compare(1, 2));
Console.ReadKey();
}
真有意思,这样委托有好几种写法了,顺便做个总结。
1.NET Framework1.1,2.0,3.5中的委托
①.NET Framework1.1的委托
复制内容到剪贴板 程序代码
delegate bool CompareDelegate(int a, int b);
static bool Compare(int a, int b)
{
return a > b;
}
static void Main(string[] args)
{
CompareDelegate Fun = new CompareDelegate(Compare);
Console.WriteLine(Fun(1, 2));
Console.ReadKey();
}
static bool Compare(int a, int b)
{
return a > b;
}
static void Main(string[] args)
{
CompareDelegate Fun = new CompareDelegate(Compare);
Console.WriteLine(Fun(1, 2));
Console.ReadKey();
}
②.NET Framework2.0的委托(匿名委托)
复制内容到剪贴板 程序代码
delegate bool CompareDelegate(int a, int b);
static void Main(string[] args)
{
CompareDelegate Compare = delegate(int a, int b)
{
return a > b;
};
Console.WriteLine(Compare(1, 2));
Console.ReadKey();
}
static void Main(string[] args)
{
CompareDelegate Compare = delegate(int a, int b)
{
return a > b;
};
Console.WriteLine(Compare(1, 2));
Console.ReadKey();
}
③.NET Framework3.5的委托(Lambda)
复制内容到剪贴板 程序代码
delegate bool CompareDelegate(int a, int b);
static void Main(string[] args)
{
CompareDelegate Compare = (a, b) => a > b;
Console.WriteLine(Compare(1, 2));
Console.ReadKey();
}
static void Main(string[] args)
{
CompareDelegate Compare = (a, b) => a > b;
Console.WriteLine(Compare(1, 2));
Console.ReadKey();
}
2.补充说明
[1].当函数当且仅当只有一个签名时,可省略中括号;当可以根据上下文推演出签名类型时,签名类型也可以省略;
[2].当函数体有多条语句时,必须用大括号,并且不能省略return;
3.官方文档
@.Lambda 表达式:http://msdn.microsoft.com/zh-cn/library/bb397687(v=VS.90).aspx
上一篇: .NET升级那些事
下一篇: .NET Framework 3.5新增泛型委托System.Func和System.Action
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
下一篇: .NET Framework 3.5新增泛型委托System.Func和System.Action
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 4096
发表评论
请登录后再发表评论!