我正在使用ASP.NET MVC并经历了一些代码,下面的语法对我来说是新的。有人可以解释一下它是如何工作的吗?
ViewDataInfo vdi = viewData.GetViewDataInfo(expression);
Func<object> modelAccessor = null;
modelAccessor = () => vdi.Value;
答案 0 :(得分:4)
ViewDataInfo vdi = viewData.GetViewDataInfo(expression);
获取GetViewDataInfo
方法的结果,使用参数expression
调用。
Func<object> modelAccessor = null;
modelAccessor = () => vdi.Value;
根据 lambda函数创建和初始化委托(函数指针)。在将来的代码中,您拨打电话modelAccessor()
,它将返回vdi.Value
。
()
- 这意味着该函数不会检索任何参数
Func<object>
- 该函数将返回object
vdi.Value
- 是{ return vdi.Value; }
Read more关于lambda函数。
答案 1 :(得分:1)
此行将ViewDataInfo
设置为vdi
变量:
ViewDataInfo vdi = viewData.GetViewDataInfo(expression);
此行初始化空Func<object>
delegate变量:
Func<object> modelAccessor = null;
此行将Func
设置为lambda expression,返回vdi
的值:
modelAccessor = () => vdi.Value;
下面的代码代表anonymous function,它不接受任何参数并返回object
(在Func
声明的泛型类型中指定):
() => vdi.Value