Оценка логического условия с использованием лямбда-выражения без сохранения его в переменной [закрыто] ⇐ C#
-
Anonymous
Оценка логического условия с использованием лямбда-выражения без сохранения его в переменной [закрыто]
У меня есть простая оценка внутри цикла:
var messageDateOk = true; if (dateFrom != null && messageDate < dateFrom.Value) сообщениеДатаОк = ложь; if (dateTo != null && messageDate > dateTo.Value) сообщениеДатаОк = ложь; если (!messageDateOk) { //Записываем что-нибудь в журнал приложения продолжать; } Я мог бы заменить messageDateOk, используя, например, этот код:
Func checkDate = (от, до, messageDate) => { if (from != null && messageDate.Date < from.Value) вернуть ложь; if (to != null && messageDate.Date > to.Value) вернуть ложь; вернуть истину; }; if (!checkDate(dateFrom, dateTo, messageDate) { //Запись журнала продолжать; } Мне не нравится явное объявление Func. Есть ли более элегантный способ сделать это? В данном конкретном случае я использую C# 7.3, но буду признателен за предложение даже по более новой версии C#.
Я знаю, что смогу это сделать:
if (dateFrom != null && messageDate < dateFrom.Value) { //Запись журнала продолжать; } if (dateTo != null && messageDate > dateTo.Value) { //Запись журнала продолжать; } ... но в "образовательных" целях мне бы хотелось увидеть что-нибудь с использованием функционального программирования.
Возможно, того, что я ищу, не существует. В этом случае и лямбды, и локальные функции требуют слишком много кода для такой простой задачи. Итак, на мой взгляд, лучший способ написать это — тот, который указан в предыдущем блоке кода вопроса
У меня есть простая оценка внутри цикла:
var messageDateOk = true; if (dateFrom != null && messageDate < dateFrom.Value) сообщениеДатаОк = ложь; if (dateTo != null && messageDate > dateTo.Value) сообщениеДатаОк = ложь; если (!messageDateOk) { //Записываем что-нибудь в журнал приложения продолжать; } Я мог бы заменить messageDateOk, используя, например, этот код:
Func checkDate = (от, до, messageDate) => { if (from != null && messageDate.Date < from.Value) вернуть ложь; if (to != null && messageDate.Date > to.Value) вернуть ложь; вернуть истину; }; if (!checkDate(dateFrom, dateTo, messageDate) { //Запись журнала продолжать; } Мне не нравится явное объявление Func. Есть ли более элегантный способ сделать это? В данном конкретном случае я использую C# 7.3, но буду признателен за предложение даже по более новой версии C#.
Я знаю, что смогу это сделать:
if (dateFrom != null && messageDate < dateFrom.Value) { //Запись журнала продолжать; } if (dateTo != null && messageDate > dateTo.Value) { //Запись журнала продолжать; } ... но в "образовательных" целях мне бы хотелось увидеть что-нибудь с использованием функционального программирования.
Возможно, того, что я ищу, не существует. В этом случае и лямбды, и локальные функции требуют слишком много кода для такой простой задачи. Итак, на мой взгляд, лучший способ написать это — тот, который указан в предыдущем блоке кода вопроса
Мобильная версия