作者tyc5116 (累人啊....)
看板C_Sharp
標題[問題] lumbda的用法
時間Mon Nov 12 21:16:30 2018
抱歉,最近剛從別的語言轉過來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://webptt.com/m.aspx?n=bbs/C_Sharp/M.1542028594.A.8FB.html
1F:→ t64141: Func 的最後一個型別參數是回傳的參數型別, 其他是輸入的 11/12 21:23
2F:→ t64141: 參數型別 11/12 21:23
3F:→ t64141: 紅色括號中帶入的是傳入的型別參數,本例不需要傳入型別參 11/12 21:26
4F:→ t64141: 數, 所以紅色括號中是空的 11/12 21:26
5F:→ testPtt: 其實lumbda很多語言都有 11/12 21:35
6F:→ james732: Google找"C# lambda"有很多網頁可以看 11/12 21:45
7F:→ tyc5116: 基本的lambda表達式google後是看的懂,只是這裡是和它的參 11/12 21:49
8F:→ tyc5116: 數Expression<Func...這個對不起來 11/12 21:50
9F:→ tyc5116: 這是要先懂LINQ才知道這個的意思是嗎? 11/12 21:50
10F:→ CloudyWing: LINQ是LINQ,Lambda是Lambda,別混回一談 11/12 21:56
11F:→ CloudyWing: 每次聽到有人問LINQ寫法和Lambda寫法分別是哪種就... 11/12 21:57
12F:推 CloudyWing: Expression是封裝delegate的一個型別 11/12 22:00
13F:→ testPtt: 你可能要了解Generic 11/12 22:02
14F:→ CloudyWing: 所以SetValue()有兩個參數,型別分別為Expression和T 11/12 22:02
15F:→ CloudyWing: () => this.AAA (Expression), value (T) 11/12 22:03
16F:→ CloudyWing: 覺得對不起來,應該是把Generic Type當成參數了 11/12 22:05
18F:→ vi000246: 你先把括號還原成1.0的寫法 再對照Func<T>來看 11/13 00:13
19F:→ vi000246: 就知道T代表什麼了 11/13 00:13
20F:推 neo5277: 可以去寫一下javascript感受應該會挺深的 11/13 17:34
21F:→ testPtt: 我覺得你的問題可能不是lambda 剛好有人提到js 11/13 19:10
22F:→ testPtt: 你可能是想知道Expression幹嘛用的:當作直譯器就好 11/13 19:13