The delegate type has to be defined outside the function. The actual delegate can be created inside the method as you do.
class MyClass {
delegate int Sum(int a, int b);
public void MyMethod(){
Sum mySumImplementation=delegate (int a, int b) {return a+b;}
Console.WriteLine(mySumImplementation(1,1).ToString());
}
}
would be valid.
The best solution may be to emulate .NET3.5, and create some generic delegate types globally, which can be used all over your solution, to avoid having to constantly redeclare delegate types for everything:
delegate R Func<R>();
delegate R Func<T, R>(T t);
delegate R Func<T0, T1, R>(T0 t0, T1 t1);
delegate R Func<T0, T1, T2, R>(T0 t0, T1 t1, T2 t2);
Then you can just use a Func<int, int, int>
delegate in your code above.