【发布时间】:2009-05-05 03:15:42
【问题描述】:
首先,我无法理解 .NET 3.5 的功能/Lambda 方面。我每天在 LINQ 中使用这些功能,但我的问题是理解实现,以及它们的真正含义(Lambda?System.Func?等)
考虑到这一点,如何实现以下目标:
例如,我想要一个 List(Of T) 的扩展方法,它将 List 中所有对象的属性设置为某个值,并返回更新后的 List(Of T)。它会被这样调用:
VB:
Dim someList As List(Of TextBox) = (New List(Of TextBox)).UpdateExtension(Function(txtb) txtb.Text = "something")
C#:
List<TextBox> someList = (new List<TextBox>()).UpdateExtension(txtb => txtb.Text = "something");
扩展方法在 VB 和 C# 中会是什么样子?
即:
<Extension()> _
Public Function UpdateExtension(Of T)(ByVal source As List(Of T), ByVal predicate As ??) As List(Of T)
'??
End Function
干杯!
编辑
正如许多人所指出的,以上可以或多或少地通过 .ForEach() 实现。但我的兴趣是了解 .ForEach() 之类的实现方式,即我对上述问题的解决方案的实现感兴趣。
【问题讨论】:
-
但是,ForEach 不会返回您可以分配给变量的文本框列表(在您的示例代码中无论如何都是空的)。
标签: .net functional-programming delegates lambda extension-methods