我在循环内有一个简单的评估:
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#,我也希望得到建议。
我知道我可以做到这一点:
if (dateFrom != null && messageDate < dateFrom.Value)
{
//Write log
continue;
}
if (dateTo != null && messageDate > dateTo.Value)
{
//Write log
continue;
}
...但出于“教育”目的,我希望看到一些使用函数式编程的东西。
我要找的东西可能不存在。在这种情况下,lambda 表达式和局部函数对于这样一个简单的任务都需要太多代码。 所以,对我来说,更好看的编写方式是问题的前一个代码块中的方式
我要找的东西不存在。写类似内容的更优雅的方式可能是 P.S 中的方式。问题部分