Mega Code Archive

 
Categories / C# Book / 01 Language Basics
 

0187 Func and Action

C# System namespace defines several generic delegates to convert almost all possible method signatures. delegate TResult Func <out TResult> (); delegate TResult Func <in T, out TResult> (T arg); delegate TResult Func <in T1, in T2, out TResult> (T1 arg1, T2 arg2); ... and so on, up to T16 delegate void Action (); delegate void Action <in T> (T arg); delegate void Action <in T1, in T2> (T1 arg1, T2 arg2); ... and so on, up to T16 We can rewrite the printer delegate as follows. using System; class Test { static void output(int[] intArray, Action<int> p) { foreach (int i in intArray) { p(i); } } static void consolePrinterInt(int i) { Console.WriteLine(i); } static void Main() { Action<int> p = consolePrinterInt; int[] intArray = new int[] { 1, 2, 3 }; output(intArray, p); } } The output: 1 2 3