Когда вы вызываете Action<T>
, вы передаете переменную типа T, которая будет доступна для кода, определенного в делегате, например,
var myAction = new Action<string>(param =>
{
Console.WriteLine("This is my param: '{0}'.", param);
});
myAction("Foo");
// Outputs: This is my param: 'Foo'.
И когда вы вызываете Func<T>
, делегат возвращает переменную типа T, например,
var myFunc = new Func<string>(() =>
{
return "Bar";
});
Console.WriteLine("This was returned from myFunc: '{0}'.", myFunc());
// Outputs: This was returned from myFunc: 'Bar'.
Вот вопрос -
Существует ли третий тип делегата, который будет принимать входной параметр, а также будет возвращать значение? Что-то вроде -
var fooDeletegate = new FooDelegate<string, int>(theInputInt =>
{
return "The Answer to the Ultimate Question of Life, the Universe, and Everything is " + theInputInt;
});
Console.WriteLine(fooDeletegate(42));
// Outputs: The Answer to the Ultimate Question of Life, the Universe, and Everything is 42
Если такой вещи не существует, возможно ли использовать Action<Func<sting>>
для такого рода функций?