看板 C_Sharp 關於我們 聯絡資訊
抱歉,最近剛從別的語言轉過來C# 看到這樣的lambda表達式有些地方不太懂 public string AAA { get { return this.GetValue(() => this.AAA) } set { this.SetValue(() => this.AAA, value) } } protected T GetValue<T>(Expression<Func<T>> property) {...} protected bool SetValue<T>(Expression<Func<T>> property, T value) {...} 主要是不懂紅色括號那是什麼意思 google找到https://ithelp.ithome.com.tw/articles/10100451 這網頁的說明也讓我有類似的疑惑,function內template的型態數量感覺對不起來 再麻煩版友幫解答一下,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.89.192 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1542028594.A.8FB.html
t64141: Func 的最後一個型別參數是回傳的參數型別, 其他是輸入的 11/12 21:23
t64141: 參數型別 11/12 21:23
t64141: 紅色括號中帶入的是傳入的型別參數,本例不需要傳入型別參 11/12 21:26
t64141: 數, 所以紅色括號中是空的 11/12 21:26
testPtt: 其實lumbda很多語言都有 11/12 21:35
james732: Google找"C# lambda"有很多網頁可以看 11/12 21:45
tyc5116: 基本的lambda表達式google後是看的懂,只是這裡是和它的參 11/12 21:49
tyc5116: 數Expression<Func...這個對不起來 11/12 21:50
tyc5116: 這是要先懂LINQ才知道這個的意思是嗎? 11/12 21:50
CloudyWing: LINQ是LINQ,Lambda是Lambda,別混回一談 11/12 21:56
CloudyWing: 每次聽到有人問LINQ寫法和Lambda寫法分別是哪種就... 11/12 21:57
CloudyWing: Expression是封裝delegate的一個型別 11/12 22:00
testPtt: 你可能要了解Generic 11/12 22:02
CloudyWing: 所以SetValue()有兩個參數,型別分別為Expression和T 11/12 22:02
CloudyWing: () => this.AAA (Expression), value (T) 11/12 22:03
CloudyWing: 覺得對不起來,應該是把Generic Type當成參數了 11/12 22:05
vi000246: 這個叫委派喔https://goo.gl/SgWu4f 11/13 00:06
vi000246: 你先把括號還原成1.0的寫法 再對照Func<T>來看 11/13 00:13
vi000246: 就知道T代表什麼了 11/13 00:13
neo5277: 可以去寫一下javascript感受應該會挺深的 11/13 17:34
testPtt: 我覺得你的問題可能不是lambda 剛好有人提到js 11/13 19:10
testPtt: 你可能是想知道Expression幹嘛用的:當作直譯器就好 11/13 19:13