Ohjelmointi

Kuinka toimia Action-, Func- ja Predicate-edustajien kanssa C #: ssä

Edustaja on tyyppikohtainen toimintoosoitin, joka voi viitata menetelmään, jolla on sama allekirjoitus kuin edustajan. Edustajia käytetään määrittelemään takaisinsoittomenetelmät ja toteuttamaan tapahtumien käsittely, ja ne ilmoitetaan käyttämällä ”delegate” -avainsanaa. Voit julistaa edustajan, joka voi esiintyä yksin tai jopa sisäkkäin luokan sisällä.

Mitä ovat Func- ja Action-edustajat? Kuinka niitä voidaan käyttää?

Perusero Func- ja Action-edustajien välillä on, että vaikka ensimmäistä käytetään palautusarvoa edustaville edustajille, jälkimmäistä voidaan käyttää niille edustajille, joissa sinulla ei ole palautusarvoa.

Func on edustaja, joka osoittaa menetelmään, joka hyväksyy yhden tai useamman argumentin ja palauttaa arvon. Toiminto on edustaja, joka osoittaa menetelmään, joka puolestaan ​​hyväksyy yhden tai useamman argumentin, mutta ei palauta arvoa. Toisin sanoen, sinun tulee käyttää toimintoa, kun edustajasi viittaa mitätöivään metodiin.

Predikaatti on valtuutettu, joka hyväksyy yhden tai useamman yleisen parametrin ja palauttaa Boolen arvon - voit olettaa, että se on jotain Funcia. Ennakkoedustajia käytetään tyypillisesti suorittamaan joillekin tiedoille hakutoimintoja ehtojen perusteella.

Ohjelmointitoimien edustajat C #: ssä

Voit hyödyntää C #: n edustajia tapahtumien ja takaisinsoittomenetelmien toteuttamiseksi. C #: n edustaja on samanlainen kuin C ++: n funktion osoittimet, mutta C #: n edustajat ovat tyypiltään turvallisia. Voit välittää menetelmät parametreina edustajalle, jotta edustaja voi osoittaa menetelmään.

Seuraava koodinpätkä kuvaa syntaksin Action delegate -toiminnon käyttämiseen.

Toiminta

Seuraava koodiluettelo näyttää, miten voit käyttää Action delegate -toimintoa. Tämä koodinpätkä suoritettaessa tulosta sana "Hei !!!" konsoli-ikkunassa.

staattinen void Main (merkkijono [] args)

        {

Action action = uusi toiminto (näyttö);

toiminta ("Hei !!!");

Konsoli.Lue ();

        }

staattinen void-näyttö (merkkijono)

        {

Console.WriteLine (viesti);

        }

Func-edustajien ohjelmointi C #: ssä

Ymmärretään nyt, kuinka voimme työskennellä Funcin edustajien kanssa C #: ssä. Tässä on Func-edustajan syntaksi.

Func

Seuraava koodinpätkä kuvaa, kuinka voit käyttää Func-edustajaa C #: ssä. Se tulostaa Hran arvon (laskettuna 40% peruspalkasta). Peruspalkka välitetään sille argumenttina.

staattinen void Main (merkkijono [] args)

        {

Func func = uusi Func (Laske Hra);

Console.WriteLine (func (50000));

Konsoli.Lue ();

        }

staattinen kaksinkertainen CalculateHra (int basic)

        {

paluu (kaksinkertainen) (perus * .4);

        }

Huomaa, että Func-edustajan ilmoituksen toinen parametri aiemmin annetussa koodinpätkässä edustaa sen menetelmän palautustyyppiä, johon edustaja osoittaisi. Tässä esimerkissä laskettu Hra-arvo palautetaan kaksinkertaisena.

Edustettujen edustajien ohjelmointi C #: ssä

Ennakkoedustajaa käytetään yleensä kohteiden etsimiseen kokoelmasta tai tietojoukosta. Tässä on predikaatin edustajan syntaksi.

Predikaatti

Huomaa, että Predicate vastaa periaatteessa Funcia.

Harkitse seuraavaa kokonaisuusluokkaa nimeltä asiakas.

luokan asiakas

    {

julkinen int Id {get; aseta; }

julkinen merkkijono Etunimi {get; aseta; }

julkinen merkkijono Sukunimi {get; aseta; }

julkinen merkkijono Osoite {get; aseta; }

julkinen merkkijono Kaupunki {get; aseta; }

julkinen merkkijono Tila {get; aseta; }

julkinen merkkijono Maa {get; aseta; }

    }

Luo seuraavaksi luettelo asiakkaista ja tallenna siihen asiakkaan tyyppisiä objekteja.

 Lista custList = uusi Lista ();

custList.Add (uusi asiakas {Id = 1, Etunimi = "Joydip", Sukunimi = "Kanjilal", Osavaltio = "Telengana", Kaupunki = "Hyderabad", Osoite = "Begumpet", Maa = "Intia"});

custList.Add (uusi asiakas {Id = 2, Etunimi = "Steve", Sukunimi = "Jones", Osavaltio = "OA", Kaupunki = "New York", Osoite = "Lake Avenue", Maa = "US"}) ;

Seuraava on täydellinen koodiluettelo, joka osoittaa, miten voimme käyttää Predicate-edustajaa tietojen hakemiseen.

staattinen void Main (merkkijono [] args)

        {

Lista custList = uusi Lista ();

custList.Add (uusi asiakas {Id = 1, Etunimi = "Joydip", Sukunimi = "Kanjilal", Osavaltio = "Telengana", Kaupunki = "Hyderabad", Osoite = "Begumpet", Maa = "Intia"});

custList.Add (uusi asiakas {Id = 2, Etunimi = "Steve", Sukunimi = "Jones", Osavaltio = "OA", Kaupunki = "New York", Osoite = "Lake Avenue", Maa = "US"}) ;

Ennakoi hydCustomers = x => x.Id == 1;

Asiakasasiakas = custList.Find (hydCustomers);

Console.WriteLine (asiakas.Etunimi);

Konsoli.Lue ();

        }

Kun yllä oleva koodinpätkä on suoritettu, nimi ”Joydip” näkyy konsoli-ikkunassa.

Kuinka tehdä enemmän C #: ssä:

  • Milloin abstraktia luokkaa vs. käyttöliittymää käytetään C #: ssä
  • Kuinka työskennellä AutoMapperin kanssa C #: ssä
  • Kuinka käyttää lambda-lausekkeita C #: ssä
  • Kuinka toimia Action-, Func- ja Predicate-edustajien kanssa C #: ssä
  • Kuinka työskennellä C #: n edustajien kanssa
  • Kuinka toteuttaa yksinkertainen kirjaaja C #: ssä
  • Kuinka työskennellä attribuuttien kanssa C #: ssä
  • Kuinka työskennellä log4netin kanssa C #: ssä
  • Kuinka toteuttaa arkiston suunnittelumalli C #: ssä
  • Kuinka työskennellä heijastuksen kanssa C #: ssä
  • Kuinka työskennellä tiedostojärjestelmän katselijan kanssa C #: ssä
  • Kuinka tehdä laiska alustus C #: ssä
  • Kuinka työskennellä MSMQ: n kanssa C #: ssä
  • Kuinka työskennellä laajennusmenetelmien kanssa C #: ssä
  • Kuinka meille lambda-lausekkeet C #: ssä
  • Milloin haihtuvaa avainsanaa käytetään C #: ssä
  • Tuottoavainsanan käyttäminen C #: ssä
  • Kuinka toteuttaa polymorfismi C #: ssa
  • Kuinka rakentaa oma tehtävän ajastin C #
  • Kuinka työskennellä RabbitMQ: n kanssa C #: ssä
  • Kuinka työskennellä C #: n kanssa
  • Virtuaalisten ja abstraktien menetelmien tutkiminen C #: ssä
$config[zx-auto] not found$config[zx-overlay] not found