【发布时间】:2019-12-10 00:14:38
【问题描述】:
我今天偶然发现了这段代码,并意识到我从来没有理解过它。
someArray.Select((x, i) => new XElement("entry",
new XElement("field", new XAttribute("name", "Option"), i + 1)
(x, i) 的意义何在?我看到了对 i 的引用,但我不明白 x 如何适合这个 lamda 表达式。
另外,为什么i 是一个整数?我看到最后有一个i + 1,所以我假设这是真的。
感谢您的帮助
【问题讨论】:
-
这就是lambda函数的定义。
-
你确实看到了...
i + 1.. 好吧,我看到了。 -
@SamAxe 我应该指定我的意思是
x而不是i -
这取决于代码试图做什么。看起来它正在构建一个与原始数组长度相同的 XML 元素列表。我看到人们在需要一个与原始列表长度相同的新列表时会做这种事情,尽管您同样可以使用
Enumerable.Range(0, someArray.Length).Select(i => ...)。这取决于上下文 - 然后您如何处理 XML 元素列表?你能问一下是谁写的吗? -
代码只需要
i。唯一的overload ofSelectthat provides thei也提供x。所以代码也必须声明x,即使它没有使用它。
标签: c# xml linq lambda anonymous-function