Re: [問題] 我看不懂 => lambda
※ 引述《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)
推
03/07 16:16, , 1F
03/07 16:16, 1F
→
03/07 18:10, , 2F
03/07 18:10, 2F
→
03/07 18:13, , 3F
03/07 18:13, 3F
→
03/07 18:14, , 4F
03/07 18:14, 4F
推
03/07 18:19, , 5F
03/07 18:19, 5F
→
03/07 18:19, , 6F
03/07 18:19, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):