Programavimas

Kaip dirbti su „Action“, „Func“ ir „Predicate“ delegatais C #

Įgaliotasis yra tipui saugus funkcijų žymeklis, galintis nurodyti metodą, kuris turi tą patį parašą kaip ir įgaliotinis. Delegatai naudojami skambinimo metodams apibrėžti ir įvykių tvarkymui įgyvendinti, ir jie deklaruojami naudojant „delegate“ raktinį žodį. Galite paskelbti delegatą, kuris gali pasirodyti atskirai ar net įdėtas į klasę.

Kas yra „Func“ ir „Action“ atstovai? Kaip juos galima naudoti?

Pagrindinis skirtumas tarp „Func“ ir „Action“ delegatų yra tas, kad nors pirmasis naudojamas delegacijoms, kurios grąžina vertę, antrasis gali būti naudojamas tiems delegatams, kurių grąžinimo vertės neturite.

„Func“ yra delegatas, nurodantis metodą, kuris priima vieną ar daugiau argumentų ir grąžina vertę. Veiksmas yra deleguotas asmuo, nurodantis metodą, kuris savo ruožtu priima vieną ar daugiau argumentų, tačiau negrąžina vertės. Kitaip tariant, turėtumėte naudoti veiksmą, kai jūsų delegatas nurodo metodą, kuris grąžinamas negaliojančiu.

Predikatas yra delegatas, kuris priima vieną ar daugiau bendrųjų parametrų ir pateikia Bulio reikšmę - galite manyti, kad tai kažkas panašaus į Func. Preliminarūs delegatai paprastai naudojami atliekant kai kurių duomenų paieškos operacijas pagal kriterijų rinkinį.

Programavimo veiksmų delegatai C #

Norėdami pasinaudoti įvykiais ir paskambinti metodais, galite pasinaudoti C # atstovų atstovų pranašumais. C # atstovas yra panašus į C ++ funkcijų rodykles, tačiau C # atstovai yra saugūs. Galite perduoti metodus kaip parametrus delegatui, kad delegatas galėtų nurodyti metodą.

Šis kodo fragmentas iliustruoja veiksmų delegato naudojimo sintaksę.

Veiksmas

Šis kodų sąrašas parodo, kaip galite naudoti veiksmo delegatą. Šis kodo fragmentas vykdant išspausdins žodį „Sveiki !!!“ konsolės lange.

static void Main (string [] args)

        {

Veiksmo veiksmas = naujas veiksmas (ekranas);

veiksmas („Labas !!!“);

Pultas.Skaitykite ();

        }

static void Display (eilutės pranešimas)

        {

Console.WriteLine (pranešimas);

        }

Programuojamas „Func“ delegatas C #

Dabar supraskime, kaip galime dirbti su „Func“ atstovais C #. Čia yra „Func“ delegato sintaksė.

Func

Šis kodo fragmentas parodo, kaip galite naudoti „Func“ delegatą C #. Joje atspausdinama Hra vertė (apskaičiuojama kaip 40% bazinio atlyginimo). Pagrindinė alga jai perduodama kaip argumentas.

static void Main (string [] args)

        {

Func func = naujas Func (apskaičiuokiteHra);

Console.WriteLine (func (50000));

Pultas.Skaitykite ();

        }

statinis dvigubas CalculateHra (int basic)

        {

grąžinimas (dvigubas) (pagrindinis * .4);

        }

Atminkite, kad antrasis „Func“ delegato deklaracijos parametras anksčiau pateiktame kodo fragmente nurodo metodo, į kurį nurodys delegatas, grąžinimo tipą. Šiame pavyzdyje apskaičiuota Hra vertė grąžinama kaip dviguba.

Tikslinių delegatų programavimas C #

Predikatinis delegatas paprastai naudojamas ieškant elementų rinkinyje ar duomenų rinkinyje. Čia yra „Predicate“ delegato sintaksė.

Spėti

Atkreipkite dėmesį, kad „Predicate“ iš esmės yra lygiavertis „Func“.

Apsvarstykite šią subjektų klasę, pavadintą Klientas.

klasės Klientas

    {

public int Id {get; rinkinys; }

public string FirstName {get; rinkinys; }

vieša eilutė Pavardė {get; rinkinys; }

viešoji eilutė Adresas {get; rinkinys; }

viešoji eilutė Miestas {get; rinkinys; }

public string State {get; rinkinys; }

viešoji eilutė Šalis {get; rinkinys; }

    }

Tada sukurkite klientų sąrašą ir saugokite jame „Client“ tipo objektus.

 Sąrašas custList = naujas sąrašas ();

custList.Add (naujas klientas {Id = 1, Vardas = "Joydip", Pavardė = "Kanjilal", Valstija = "Telengana", Miestas = "Hyderabad", Adresas = "Begumpet", Šalis = "Indija"});

custList.Add (naujas klientas {Id = 2, Vardas = "Steve", Pavardė = "Jones", Valstija = "OA", Miestas = "Niujorkas", Adresas = "Lake Avenue", Šalis = "JAV"}) ;

Toliau pateikiamas visas kodų sąrašas, parodantis, kaip mes galime naudoti „Predicate“ delegatą duomenų paieškai.

static void Main (string [] args)

        {

Sąrašas custList = naujas sąrašas ();

custList.Add (naujas klientas {Id = 1, Vardas = "Joydip", Pavardė = "Kanjilal", Valstija = "Telengana", Miestas = "Hyderabad", Adresas = "Begumpet", Šalis = "Indija"});

custList.Add (naujas klientas {Id = 2, Vardas = "Steve", Pavardė = "Jones", Valstija = "OA", Miestas = "Niujorkas", Adresas = "Lake Avenue", Šalis = "JAV"}) ;

Nurodykite hidCustomers = x => x.Id == 1;

Kliento klientas = custList.Find (hydCustomers);

Console.WriteLine (klientas.Vardas);

Pultas.Skaitykite ();

        }

Kai bus įvykdytas aukščiau pateiktas kodo fragmentas, konsolės lange bus rodomas vardas „Joydip“.

Kaip padaryti daugiau C #:

  • Kada naudoti abstrakčią klasę ir sąsają C #
  • Kaip dirbti su „AutoMapper“ C #
  • Kaip naudoti lambda išraiškas C #
  • Kaip dirbti su „Action“, „Func“ ir „Predicate“ delegatais C #
  • Kaip dirbti su delegatais C #
  • Kaip įdiegti paprastą kaupiklį C #
  • Kaip dirbti su atributais C #
  • Kaip dirbti su „Log4net“ C #
  • Kaip įgyvendinti saugyklos dizaino modelį C #
  • Kaip dirbti su atspindžiu C #
  • Kaip dirbti su failų stebėjimo programa C #
  • Kaip atlikti tingų inicializavimą C #
  • Kaip dirbti su MSMQ C #
  • Kaip dirbti su plėtinių metodais C #
  • Kaip mums lambda išraiškos C #
  • Kada naudoti nepastovų raktinį žodį C #
  • Kaip naudoti pajamingumo raktinį žodį C #
  • Kaip įgyvendinti polimorfizmą C #
  • Kaip sukurti savo užduočių planavimo priemonę C #
  • Kaip dirbti su „RabbitMQ“ C #
  • Kaip dirbti su dvigubu C #
  • Naršyti virtualius ir abstrakčius metodus C #