我在循环内有一个简单的评估:
var messageDateOk = true;
if (dateFrom != null && messageDate < dateFrom.Value)
messageDateOk = false;
if (dateTo != null && messageDate > dateTo.Value)
messageDateOk = false;
if (!messageDateOk)
{
//Write something in the application log
continue;
}
我可以使用以下代码替换
messageDateOk
:
Func<DateTime?, DateTime?, DateTimeOffset, bool> checkDate = (from, to, messageDate) =>
{
if (from != null && messageDate.Date < from.Value)
return false;
if (to != null && messageDate.Date > to.Value)
return false;
return true;
};
if (!checkDate(dateFrom, dateTo, messageDate)
{
//Write log
continue;
}
但我不喜欢
Func
的明确声明。有没有更优雅的方法来做到这一点?在这个特定情况下,我使用的是 C# 7.3,但即使是较新的 C#,我也希望得到建议。
P.S:我知道我什至可以做到这一点:
if (dateFrom != null && messageDate < dateFrom.Value)
{
//Write log
continue;
}
if (dateTo != null && messageDate > dateTo.Value)
{
//Write log
continue;
}
..但是出于“教育”目的,我希望看到使用函数式编程的东西。谢谢你
我要找的东西不存在。写类似内容的更优雅的方式可能是 P.S 中的方式。问题部分