作者guaz (guaz)
看板C_Sharp
标题Re: [问题] 我看不懂 => lambda
时间Sun Mar 7 15:02:16 2010
※ 引述《F23ko (纯洁)》之铭言:
: 看了好久,还是搞不懂 lambda这个东西....
恕删
: public partial class Form1 : Form
: {
: public Form1()
: {
: InitializeComponent();
: this.Click += new System.EventHandler(this.点击);
上面一行可以有很多种做法:
EventHandler clickFunc = new EventHandler(this.点击);
or
EventHandler clickFunc = this.点击;
or
EventHandler clickFunc = new EventHandler((s, e) => { this.点击(s, e); });
or
EventHandler clickFunc = (s, e) => { this.点击(s, e) };
or
EventHandler clickFunc =
(s, e) => { MessageBox.Show(((MouseEventArgs)e).Location.ToString()); };
可以看你的需求做变化
最後加上 this.Click += clickFunc
: }
: private void 点击(object sender, EventArgs e)
: {
: MessageBox.Show(((MouseEventArgs)e).Location.ToString());
: }
: }
: 那(s,e)到底是干什麽用的???
对照"点击"里的参数(sender, e)
: 在前面完全没宣告过这个东西.....
: 我又怎麽会知道,这到底是干什麽用的?
this.Click的型别是delegete void EventHandler(object sender, EventArgs e)
: 再者,在逐行执行的时候,我看见编译器会回头执行委派中Lambda右边运算式
: 这有点像method
: 但是Lambda中可以读取外部变数,但是外部程式不能读取Lambda中宣告的变数
: 我就不了解这到底是什麽鬼了.....
平常method里宣告的参数外面也读不到啊
lambda expression是给懒人用的好东西啊 :P
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.171.170
※ 编辑: guaz 来自: 122.116.171.170 (03/07 15:14)
※ 编辑: guaz 来自: 122.116.171.170 (03/07 15:19)
1F:推 F23ko:但是委派可以读到外面的参数 @@.... 03/07 16:16
2F:→ guaz:这是花括弧里面跟外面的差别 03/07 18:10
3F:→ guaz:出到花括弧外面变数就被释放掉了 03/07 18:13
4F:→ guaz:之所以能读到外面, 是因为还包在上一层里面 03/07 18:14
5F:推 F23ko:原来如此.... method 因为已经出了大括弧,所以读不到,lam 03/07 18:19
6F:→ F23ko:bda因为还在里面 所以可以读 03/07 18:19