public static void Main()
int MyLocalMethod(int a, int b) {
Func<int, int, int> myLambda = (a, b) => a + b;
Func<int, int, int> myLambda2 = (a, b) => a * (b + someVal);
Console.WriteLine($"myLambda: {myLambda(2, 3)}");
Console.WriteLine($"myLambda: {myLambda2(2, 3)}");
Console.WriteLine($"MyMethod: {Program.MyMethod(2, 3)}");
Console.WriteLine($"MyMethod2: {MyLocalMethod(2, 3)}");
int[] array = {1, 2, 3, 4, 5};
Console.WriteLine($"DoShit myLambda: {DoShit(array, 0, myLambda)}");
Console.WriteLine($"DoShit myLambda2: {DoShit(array, 1, myLambda2)}");
Console.WriteLine($"DoShit MyMethod: {DoShit(array, 2, Program.MyMethod)}");
Console.WriteLine($"DoShit MyLocalMethod: {DoShit(array, 2, MyLocalMethod)}");
public static int MyMethod(int a, int b)
public static int DoShit(int[] vals, int start, Func<int, int, int> f) {
foreach( int val in vals ) {