lambda表达式是运行到它才会动态生成吗?

时间:2021-03-21 18:44:59
比如对于这里面
conDic.AddOrUpdate(key, newValue, (cKey, oldValue) => newValue);
的(cKey, oldValue) => newValue这个lambda表达式
是不是在系统运行到了这里才会生成?
故newValue对于该lambda是个常量。
如果不是动态生成,那系统又怎么处理newValue的?
是隐藏的有第三个产生来传newValue,即:(cKey, oldValue, newValue) => newValue ?

4 个解决方案

#1


不是动态生成的,是经过预编译的, 你调试的时候可以打个断点然后编辑里面的表达式,更改之后是没办法编辑并继续的

#2


引用 1 楼 u010109316 的回复:
不是动态生成的,是经过预编译的, 你调试的时候可以打个断点然后编辑里面的表达式,更改之后是没办法编辑并继续的

那如果是预编译的对于(cKey, oldValue) => newValue 系统是怎么处理newValue的呢?这个值可是必须运行到这一步才能确定呀。

#3


找到对应的知识点了,是闭包的概念。

#4


引用 3 楼 silentdoer 的回复:
找到对应的知识点了,是闭包的概念。


lambda表达式是运行到它才会动态生成吗?

#1


不是动态生成的,是经过预编译的, 你调试的时候可以打个断点然后编辑里面的表达式,更改之后是没办法编辑并继续的

#2


引用 1 楼 u010109316 的回复:
不是动态生成的,是经过预编译的, 你调试的时候可以打个断点然后编辑里面的表达式,更改之后是没办法编辑并继续的

那如果是预编译的对于(cKey, oldValue) => newValue 系统是怎么处理newValue的呢?这个值可是必须运行到这一步才能确定呀。

#3


找到对应的知识点了,是闭包的概念。

#4


引用 3 楼 silentdoer 的回复:
找到对应的知识点了,是闭包的概念。


lambda表达式是运行到它才会动态生成吗?