Есть ли какие-либо последствия для производительности для реализации ссылочно-прозрачных методов как статических функций только для чтения, а не просто как методы?Лично я нахожу версии Func более читабельными, но, возможно, традиционный способ более эффективен.
Это:
static readonly Func<DateTime, DateTime> TruncateDay =
date => date.AddHours(-date.Hour)
.AddMinutes(-date.Minute)
.AddSeconds(-date.Second)
.AddMilliseconds(-date.Millisecond);
static readonly Func<DateTime, DateTime> TruncateMonth =
date => TruncateDay(date).AddDays(1 - date.Day);
static readonly Func<DateTime, DateTime> TruncateYear =
date => TruncateMonth(date).AddMonths(1 - date.Month);
static readonly Func<DateTime, int> QuarterSwitch =
date => Switch(date.Month % 3, 0,
Case(1, 3),
Case(2, 4),
Case(0, 5));
По сравнению с этим:
static DateTime TruncateDay (DateTime date)
{
return date.AddHours(-date.Hour)
.AddMinutes(-date.Minute)
.AddSeconds(-date.Second)
.AddMilliseconds(-date.Millisecond);
}
static DateTime TruncateMonth (DateTime date)
{
return TruncateDay(date).AddDays(1 - date.Day);
}
static DateTime TruncateYear (DateTime date)
{
return TruncateMonth(date).AddMonths(1 - date.Month);
}
static int QuarterSwitch (DateTime date)
{
return Switch(date.Month % 3, 0,
Case(1, 3),
Case(2, 4),
Case(0, 5));
}
Как онипредставлены внутри?На что каждый компилятор переводит?