Это простой способ сделать такой код проще? Да, я знаю, что код в комментарии может быть извлечен как метод, но это немного запутывает, чтобы записывать такие две перегрузки каждый раз. Обратите внимание, что могут быть другие параметры, кроме
functor
, в функции, такой какDoSomething
.Как упростить код с двумя перегрузками функции, которые получают Func и Action в качестве параметра?Result DoSomething<Result>(Func<Parameter, Result> functor) { // do something to construct argument return functor(argument); } void DoSomething(Action<Parameter> functor) { // do something to construct argument functor(argument); }
Более сложный вариант. Как достичь такого же результата без дублирования кода, если вызов
functor
находится внутри блокаusing
?
На самом деле я хочу найти C# альтернативу коды C++ 14, как
template <class Functor>
auto DoSomething(Functor functor)
{
// do something...
return functor(argument);
}
Похоже, что 'аргумент' не объявлен. – abelenky
@abelenky Предположим, что он объявлен внутри блока '// do something ... 'кода. – Constructor
Ну, вы можете называть DoSomething (p => {action (p); return 1;}); 'и игнорировать возвращаемое значение, чтобы заставить' Action' работать в перегрузке 'Func'. –
juharr