I delegati di C# sono sempre stati difficili da comprendere e quindi sono stato molto felice di imbattermi in logicchild's article on The Code Project web site titled "C# Delegates: Step by Step". Ha un modo molto sintetico di spiegare i delegati di C# e posso consigliarvelo. Tuttavia, a provare gli esempi, vedo che sono due modi per inizializzare un delegato, principalmente:Qual è il modo "corretto" per inizializzare un delegato 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);
e
CalculationHandler sumHandler2 = math.Sum;
//invoke the delegate
int result = sumHandler2(8, 9);
Console.WriteLine("Result 2 is: " + result);
dove la classe di matematica è definita come
public class Math
{
public int Sum(int x, int y)
{
return x + y;
}
}
Quindi qual è il modo "corretto" e perché?
Whoa. Un sacco di crimini sono commessi "Per motivi di leggibilità" e tra loro spicca la scrittura di un codice lungo e contorto anziché di un codice chiaro e conciso. Questo è l'opposto della leggibilità. –
divertente uso il secondo per la leggibilità. Basta dimostrare che la leggibilità è soggettiva –
@Konrad, long non è automaticamente uguale a contorto. E breve non automaticamente uguale leggibile. RegEx viene in mente ... Il fatto è che il modo "più lungo" segue più da vicino il modo in cui tutto il resto funziona in C#. La via più breve è potenzialmente confusa. Chiamerei a malapena CalculationHandler sumHandler1 = new CalculationHandler (math.Sum); un crimine. – colithium