Мне всегда было трудно понять делегатов C #, и поэтому я был очень рад наткнуться на статью logicchild на веб-сайте Code Project под названием «Делегаты C #: шаг за шагом» . У него очень сжатый способ объяснения делегатов 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;
}
}
Так что это «правильный» способ и почему?