有人能解释一下这个代码片段里发生了什么吗?
本文关键字:片段 代码 发生了 什么 能解释 一下 | 更新日期: 2023-09-27 18:03:07
我正在使用ASP。NET MVC,并通过了一些代码,下面的语法是新的我。有人能告诉我它是怎么工作的吗?
ViewDataInfo vdi = viewData.GetViewDataInfo(expression);
Func<object> modelAccessor = null;
modelAccessor = () => vdi.Value;
ViewDataInfo vdi = viewData.GetViewDataInfo(expression);
获取参数为expression
的GetViewDataInfo
方法的结果。
Func<object> modelAccessor = null;
modelAccessor = () => vdi.Value;
根据lambda函数创建并初始化委托(函数指针)。当你在以后的代码中调用modelAccessor()
时,它将返回vdi.Value
。
()
-这意味着函数不检索参数。Func<object>
-函数将返回一个object
。vdi.Value
-是{ return vdi.Value; }
的缩写形式
阅读更多关于lambda函数的信息
这一行将ViewDataInfo
设置为vdi
变量:
ViewDataInfo vdi = viewData.GetViewDataInfo(expression);
这一行初始化了一个空的Func<object>
委托变量:
Func<object> modelAccessor = null;
这一行将Func
设置为返回vdi
值的lambda表达式:
modelAccessor = () => vdi.Value;
下面的代码代表一个匿名函数,它不接受任何参数,并返回一个object
(在Func
声明的泛型中指定):
() => vdi.Value