functional programming principles applied in C#
Funcs are another sugar syntax to create delegates that the .NET framework
gives us. But these do have a generic
return type, and can
take up to sixteen generic parameters as input. The key difference
between Actions
and Funcs
is that the last parameter of a Func
which is the return type.
using System;
using System.Diagnostics;
internal static class TestFuncs
{
internal static void Run()
{
// string -> string
Func<string, string> consoleLoggerHandler = ConsoleLogger;
Func<string, string> debugLoggerHandler = DebugLogger;
Func<string, string> allConsoleHandlers = consoleLoggerHandler + debugLoggerHandler;
var consoleResponse = consoleLoggerHandler("This goes to the console");
var debugResponse = debugLoggerHandler("This goes to the debug");
var lastResponse = allConsoleHandlers("this goes to all");
}
private static string ConsoleLogger(string message)
{
Console.WriteLine(message);
return "Logged to console";
}
private static string DebugLogger(string message)
{
Debug.WriteLine(message);
return "Logged to debug";
}
}