我只是从功能中返回星期几。如果是假期周,则在每天之后添加单词“ holiday”。
public IEnumerable<string> GetDays(bool isHolidayWeek)
{
var days= new List<string>() { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };
var i = 0;
if (isHolidayWeek)
foreach (var day in days)
days[i++] = day + " Holiday";
return days;
}
这样可以更有效地编写吗?也许使用收益率回报?
您可以使用Select
from方法System.Linq
来简化代码,并返回带有Holiday
添加的日期名称(isHolidayWeek
等于时true
)。将Days
集合移到该方法之外还可以帮助最小化内存消耗(一点点)
public static readonly IList<string> Days = new List<string>()
{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
public static IEnumerable<string> GetDays(bool isHolidayWeek)
{
if (isHolidayWeek)
return Days.Select(d => $"{d} Holiday");
return Days;
}
这里的问题是,每次调用此方法时根本不需要建立数组,这是不必要的资源浪费。
days
通话之间会发生什么变化?移动
days
外面很容易感谢帕维尔的回答。这么小的阵列并不是什么大问题,我们生活在2020年,而不是1980年代,在那里您必须非常谨慎地记忆。我将数组保留在函数中,因为它仅属于/与该函数有关。干杯
当然,它很容易,但这是主要的优化,而不是使用linq,它在您的原始答案中丢失了。实际上,Linq可能是针对这种simpe方案的去优化。
另外,为什么投影?现在,您一次又一次地投影同一件事。为什么不简单地使用假日文字来创建数组。