[问题] 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