栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我想了解@ Html.DisplayFor(modelItem => item.FirstName)中的lambda表达式

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我想了解@ Html.DisplayFor(modelItem => item.FirstName)中的lambda表达式

Lambda表达式是一种编写匿名函数(即不带名称的函数)的方法。在“箭头”左侧的内容是函数参数,而在右侧的内容是函数主体。因此,在

(x =>x.Name)
逻辑上转换为类似
string Function(Data x) { return x.Name}
类型的东西,
string
并且
Data
显然会有所不同并从上下文派生。

缺少左侧参数将转换为不带参数的函数,因此

(() => someVariable)
从逻辑上可以转换为:
string Function() {return someVariable; }

在这一点上,您可能会开始想知道

someVariable
它的来源,它不是函数参数,并且未在函数中定义。您将是对的,像这样的函数将永远无法编译。但是,这样的lambda函数非常好,因为它允许提升和使用外部范围变量。(内部创建一个包装器类,其中在lambda表达式中使用的变量将成为字段。)

现在,让我们看看这

model => item.FirstName
意味着什么。从逻辑上讲,它将转换为
string Function(Modelmodel) { return item.FirstName; }
。基本上,这是带有参数的函数,但是不使用此参数。

现在,信息的最后一点。尽管lambda表达式最后表示函数,但有时创建它们并不是出于实际执行的目的(尽管可能这样做)。Lambda表达式可以以表达式树的形式表示。这意味着可以
解析 它而不是执行它。

在这种特殊情况下,MVC引擎不会 运行 lambda表达式表示的功能。取而代之的是 解析
表达式,以便MVC引擎知道要为此特定行发出的html。如果您的数据项不是直接来自模型对象,则lambda表达式的左侧部分无关紧要。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/568452.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号