我有一个包含美国假期日期的列表(日期)。每当某个日期在周末时,它必须移到周五或周一。
我知道我可以使用:
For i As Integer = 0 To HolidayList.Count - 1
Dim dt As Date = HolidayList(i)
If dt.DayOfWeek = DayOfWeek.Saturday Then
HolidayList(i) = dt.AddDays(-1)
End If
If dt.DayOfWeek = DayOfWeek.Sunday Then
HolidayList(i) = dt.AddDays(1)
End If
Next
但我真的很想理解动作、委托、函数和 lambda;这些对我来说都有些模糊。我有时会使用它们,并试图提高我使用它们的能力。
我可以使用 HolidayList.ForEach 使用内联函数/lambda 增加/减少日期吗?
Dim HolidayList As New List(Of Date)
'I have a function that creates a list of current year's holidays based on the rules
HolidayList.Add("1/1/2013")
HolidayList.Add("7/4/2013")
HolidayList.Add("12/25/2013")
'saturday holidays are moved to Fri; Sun to Mon
'something like this
'HolidayList.ForEach(action as system.action(of Date))
'HolidayList.ForEach(func(if dt.DayOfWeek = DayOfWeek.Saturday then dt = dt.AddDays(-1)))
编辑:我已经查看了 Action(Of T) Delegate 和 List(of T).ForEach 的文档,但我无法将它们放在一起。