C# Delegierte waren immer schwierig für mich zu erfassen und so war ich sehr glücklich über logicchild's article on The Code Project web site titled "C# Delegates: Step by Step" zu stolpern. Er hat eine sehr prägnante Art, C# -Teilnehmer zu erklären, und ich kann es Ihnen empfehlen. Um jedoch die Beispiele auszuprobieren, ich sehe, dass es zwei Möglichkeiten, einen Delegierten zu initialisieren, vor allem:Was ist der "richtige" Weg, einen C# -Delegaten zu initialisieren?
//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);
und
CalculationHandler sumHandler2 = math.Sum;
//invoke the delegate
int result = sumHandler2(8, 9);
Console.WriteLine("Result 2 is: " + result);
, wo die Mathematik in der Klasse als
public class Math
{
public int Sum(int x, int y)
{
return x + y;
}
}
definiert ist
Also was ist der "richtige" Weg und warum?
Whoa. Viele Verbrechen werden begangen "Aus Gründen der Lesbarkeit", und prominent unter ihnen ist das Schreiben langer, gewundener Code statt klarer, prägnanter Code. Das ist das Gegenteil von Lesbarkeit. –
Spaß Ich benutze die zweite für die Lesbarkeit. Geht nur um zu zeigen, dass die Lesbarkeit ist subjektiv –
@Konrad, lang ist nicht automatisch gleich verschlungen. Und short ist nicht automatisch gleich lesbar. RegEx kommt mir in den Sinn ... Tatsache ist, dass der "längere" Weg der Arbeitsweise von C# genauer folgt. Der kürzere Weg ist möglicherweise verwirrend. Ich würde kaum CalculationHandler sumHandler1 = new CalculationHandler (math.Sum) nennen; ein Verbrechen. – colithium