gpt4 book ai didi

c# - 如何在 C# 中分配委托(delegate)扩展方法?

转载 作者:行者123 更新时间:2023-11-30 16:18:39 25 4
gpt4 key购买 nike

我想使用提供的频率获取两个端点之间的所有日期。所以我的方法基于这段简单的代码:

for (DateTime date = startDate; date <= endDate; date = date.AddDays(1))
datesBetween.Add(date);

现在,我有时需要根据 FrequencyEnum

添加天数(如上所述)、添加月数或添加年数

所以我可以使用 switch 并在我的使用中重复代码 3 次,但我想知道我是否可以分配委托(delegate)扩展方法而不是 .AddDays.AddMonths.AddYears

相反,我想做这样的事情:

for (DateTime date = startDate; date <= endDate; date = date.AddFrequency)
datesBetween.Add(date);

其中 .AddFrequency 是定义我的频率所需的扩展方法的委托(delegate)。

或者,我可以使用扩展方法,而只使用带有日期参数并根据需要返回的函数。

最佳答案

我想你想要一个 Func<DateTime, DateTime>

Func<DateTime, DateTime> updater = d => d.AddFrequency(Frequency.Month);

for (DateTime date = startDate; date <= endDate; date = updater(date))
datesBetween.Add(date);

当然,在您的实际代码中,您的方法可能会接受委托(delegate)作为参数,而不是自行初始化它。

也就是说,使用 moreLinq ,你可以这样做:

var datesBetween = startDate.Generate(date => date.AddDays(1))
.TakeWhile(date => date <= endDate);

关于c# - 如何在 C# 中分配委托(delegate)扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15975065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com