[問題] lumbda的用法

作者: tyc5116 (累人啊....)   2018-11-12 21:16:30
抱歉,最近剛從別的語言轉過來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的型態數量感覺對不起來
再麻煩版友幫解答一下,謝謝
作者: t64141 (榕樹)   2018-11-12 21:23:00
Func 的最後一個型別參數是回傳的參數型別, 其他是輸入的參數型別紅色括號中帶入的是傳入的型別參數,本例不需要傳入型別參數, 所以紅色括號中是空的
作者: testPtt (測試)   2018-11-12 21:35:00
其實lumbda很多語言都有
作者: james732 (好人超)   2018-11-12 21:45:00
Google找"C# lambda"有很多網頁可以看
作者: tyc5116 (累人啊....)   2018-11-12 21:49:00
基本的lambda表達式google後是看的懂,只是這裡是和它的參數Expression<Func...這個對不起來這是要先懂LINQ才知道這個的意思是嗎?
作者: CloudyWing (孤單ㄉ翼)   2018-11-12 21:56:00
LINQ是LINQ,Lambda是Lambda,別混回一談每次聽到有人問LINQ寫法和Lambda寫法分別是哪種就...Expression是封裝delegate的一個型別
作者: testPtt (測試)   2018-11-12 22:02:00
你可能要了解Generic
作者: CloudyWing (孤單ㄉ翼)   2018-11-12 22:02:00
所以SetValue()有兩個參數,型別分別為Expression和T() => this.AAA (Expression), value (T)覺得對不起來,應該是把Generic Type當成參數了
作者: vi000246 (Vi)   2018-11-13 00:06:00
這個叫委派喔https://goo.gl/SgWu4f你先把括號還原成1.0的寫法 再對照Func<T>來看就知道T代表什麼了
作者: neo5277 (I am an agent of chaos)   2018-11-13 17:34:00
可以去寫一下javascript感受應該會挺深的
作者: testPtt (測試)   2018-11-13 19:10:00
我覺得你的問題可能不是lambda 剛好有人提到js你可能是想知道Expression幹嘛用的:當作直譯器就好

Links booklink

Contact Us: admin [ a t ] ucptt.com