Делегатам C# всегда было трудно понять, и поэтому я был очень счастлив споткнуться через logicchild's article on The Code Project web site titled "C# Delegates: Step by Step". Он очень лаконично объясняет делегатов 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;
}
}
Итак, каков «правильный» способ и почему?
Whoa. Множество преступлений совершается «ради удобочитаемости», и среди них заметным является длинный, сложный код, а не четкий и сжатый код. Это противоположность читаемости. –
fun Я использую второй для удобочитаемости. Просто идет, чтобы показать, что читаемость субъективна. –
@ Konrad, long не автоматически равномерно запутан. И короткий не является автоматически равным читабельному. RegEx приходит на ум ... Дело в том, что «более длинный» путь более точно следует за тем, как все работает на C#. Более короткий путь потенциально запутан. Я бы вряд ли назвал CalculationHandler sumHandler1 = new CalculationHandler (math.Sum); преступление. – colithium