C # делегатов всегда было трудно понять, поэтому я был очень рад наткнуться на статью logicchild на веб-сайте Code Project под названием «C # Delegates: Step by Step» . У него очень лаконичный способ объяснить делегатам C #, и я могу рекомендовать его вам. Однако, пробуя примеры, я вижу, что есть два способа инициализации делегата, в основном:
//create a new instance of the delegate class
CalculationHandler sumHandler1 = new CalculationHandler(math.Sum);
//invoke the delegate
int result = sumHandler1(8, 9);
Console.WriteLine("Result 1 is: " + result);
и
CalculationHandler sumHandler2 = math.Sum;
//invoke the delegate
int result = sumHandler2(8, 9);
Console.WriteLine("Result 2 is: " + result);
где математический класс определяется как
public class math
{
public int Sum(int x, int y)
{
return x + y;
}
}
Так какой же «правильный» путь и почему?