作者F23ko (纯洁)
看板C_Sharp
标题[问题] 我看不懂 => lambda
时间Mon Mar 1 20:07:32 2010
看了好久,还是搞不懂 lambda这个东西....
http://msdn.microsoft.com/zh-tw/library/bb383984.aspx
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Use a lambda expression to define an event handler.
this.Click +=
(s, e) => {
MessageBox.Show(((MouseEventArgs)e).Location.ToString());
};
}
}
根据测试结果,这一段的功能等於
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Click += new System.EventHandler(this.点击);
}
private void 点击(object sender, EventArgs e)
{
MessageBox.Show(((MouseEventArgs)e).Location.ToString());
}
}
那(s,e)到底是干什麽用的???
在前面完全没宣告过这个东西.....
我又怎麽会知道,这到底是干什麽用的?
再者,在逐行执行的时候,我看见编译器会回头执行委派中Lambda右边运算式
这有点像method
但是Lambda中可以读取外部变数,但是外部程式不能读取Lambda中宣告的变数
我就不了解这到底是什麽鬼了.....
感觉起来有点像For之类的回圈.....
但又不是回圈.....
for (;;)
{
int Xi = 0;
}
Xi = 5; //编译器会说Xi不存在.....
请问我该怎麽去理解、使用 => 这个东西?
--
◢
乡民啊!乡民! 请告诉我谁是最纯洁的人!
◢█ │
PTT │
██
:就是你!Snow White F23ko!│
█◤ ╯
◤ ﹨(╯▽╰ )∕
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.27.109.77
1F:→ ssccg: (s, e) => { } 是宣告一个匿名方法,()里面是参数 03/01 20:28
2F:→ ssccg:可以想成定义 someMethod(var s, var e) { },然後直接呼叫 03/01 20:31
3F:→ F23ko:请问.... 什麽状况下用这个比较好? 什麽状况用这个会出问题? 03/01 22:11
4F:→ F23ko:不知道该怎麽用,表是我自己还没搞懂.... orz.... 03/01 22:13
5F:推 FAITHY:我是想到如果有变数在两个涵式间会共享到 03/01 23:14
6F:→ FAITHY:改成匿名方法就不用宣告成globe变数 是酱吗 03/01 23:15
7F:→ F23ko:orz不晓得能不能这样用... 03/02 12:42
8F:→ Sany:真有深处的用法 03/02 17:58
9F:推 Sany:C#3.0才有...vs2005能用这种方法吗? 03/02 18:06
10F:→ yauhh:当你可以把函数表达成lambda式,就可以把函数当做参数给另一 03/02 19:58
11F:→ yauhh:函数使用. 03/02 19:58
12F:→ F23ko:谢谢各位的回答 努力理解中 03/02 20:24