2016-06-15 6 views
1

Ich kann nicht verstehen, warum Delegat hier verwendet wird:Was bedeutet diese Verwendung von Delegierten?

List<string> temp_list = new List<string>(); 
string[] temp_array; 
temp_array = Array.ConvertAll(arr_DL[m], delegate (int j) { return j.ToString(); }); 
temp_list.AddRange(temp_array.ToList()); 

der Code soll das Array konvertieren aufzulisten. Kann jemand den Gebrauch von Delegaten hier erklären?

Antwort

1

Das ist, weil es der zweite Parameter von ConvertAll Methode ist. Es stellt dar, wie jedes Element in anfänglichen Array umgewandelt werden soll:

A Converter < TInput, TOutput>, die jedes Element von einem Typ in einem anderen Typ konvertiert.

So Ihre Stellvertretung sais "konvertieren jedes intj-string von j.ToString(); performing"

1

Dieser Teil:

delegate (int j) { return j.ToString(); } 

schafft so genannte "anonyme Methode" als zweiten Parameter TOutput, die verwendet um die Eingabe der Variablen int in String zu konvertieren, wird sie an die Methode Array.ConvertAll() übergeben. Anonyme Methoden allgemein auf C# 2.0 verwendet, wobei in C# 3.0 sie mit Lambda-Ausdruck wie folgt substituiert:

delegate String output (int j); 
String output = x => { x.ToString(); } 

Referenz: https://msdn.microsoft.com/en-us/library/bb882516.aspx

CMIIW.