C# delegados siempre han sido difíciles para mí de entender y por lo que era muy feliz a tropezar con logicchild's article on The Code Project web site titled "C# Delegates: Step by Step". Él tiene una manera muy sucinta de explicar a los delegados de C# y puedo recomendarlo. Sin embargo, en probar los ejemplos, veo que son dos formas de inicializar un delegado, principalmente:¿Cuál es la forma "correcta" de inicializar un delegado de 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);
y
CalculationHandler sumHandler2 = math.Sum;
//invoke the delegate
int result = sumHandler2(8, 9);
Console.WriteLine("Result 2 is: " + result);
donde la clase de matemáticas se define como
public class Math
{
public int Sum(int x, int y)
{
return x + y;
}
}
Entonces, ¿cuál es la forma "correcta" y por qué?
Whoa. Se cometen muchos crímenes "por el bien de la legibilidad", y uno de los principales es escribir código largo y complicado en lugar de un código claro y conciso. Eso es lo opuesto a la legibilidad. –
diversión uso el segundo para facilitar la lectura. Solo sirve para mostrar que la legibilidad es subjetiva –
@Konrad, long no iguala automáticamente la complicada. Y corto no es automáticamente legible. RegEx viene a la mente ... El hecho es que la forma "más larga" sigue más de cerca la forma en que todo lo demás funciona en C#. El camino más corto es potencialmente confuso. Apenas llamaría a CalculationHandler sumHandler1 = new CalculationHandler (math.Sum); un crimen. – colithium