Metóda ako parameter
Nie len premenné alebo objekty môžu byť použité ako vstupný parameter pre metódu. V prípade potreby, je možné ako parameter použiť aj referenciu na inú metódu.Prvým krokom je zadefinovanie delegáta, ktorý bude "predpisovať" požadované náležitosti pre metódu, ktorú chceme predať ako parameter. Konkrétne hovorí o jej vstupných parametroch a návratovej hodnote.
Zdrojový kód:
public delegate void DataProcessMthd(System.Data.DataTable Data);
Takto zadefinovaný delegát bude nahrádzať požadovaný typ vstupného parametraZdrojový kód:
private static void GetData(DataProcessMthd Mthd)
{
DataTable Data = new DataTable();
Data.Columns.Add(new DataColumn("ID", typeof(int)));
Data.Columns.Add(new DataColumn("Name", typeof(string))); Data.Rows.Add(1, "Eva");
Data.Rows.Add(2, "Mike");
Data.Rows.Add(2, "John");
Mthd(Data);
}
Metóda v príklade vytvorí dáta vo forme System.Data.DataTable a následné ich predá do metódy, ktorá prišla ako parameter.Predávaná metóda môže vyzerať nasledovne:{
DataTable Data = new DataTable();
Data.Columns.Add(new DataColumn("ID", typeof(int)));
Data.Columns.Add(new DataColumn("Name", typeof(string))); Data.Rows.Add(1, "Eva");
Data.Rows.Add(2, "Mike");
Data.Rows.Add(2, "John");
Mthd(Data);
}
Zdrojový kód:
private static void DoDataProcess(DataTable Data)
{
Console.WriteLine("Rows count: " + Convert.ToInt32(Data.Rows.Count));
}
Metódu predávame rovnako ako akúkoľvek premennú:{
Console.WriteLine("Rows count: " + Convert.ToInt32(Data.Rows.Count));
}
Zdrojový kód:
static void Main(string[] args)
{
GetData(DoDataProcess);
}
Keywords: C#, Method, Delegate
{
GetData(DoDataProcess);
}