作者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/cn.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