Programiranje

Kako delati z razširitvenimi metodami v jeziku C #

Programski jezik C # nudi podporo za razširitvene metode iz C # 3.0. Metoda razširitve je tista, ki se uporablja za razširitev funkcionalnosti obstoječih tipov z dodajanjem metod brez potrebe po ustvarjanju novih izvedenih tipov. Za delo z metodami razširitve vam ni treba ustvarjati podrazredov obstoječih razredov ali preoblikovati ali spremeniti obstoječih razredov. Metode razširitve izboljšajo berljivost vaše kode, hkrati pa omogočajo razširitev funkcionalnosti obstoječih vrst.

Skupne metode razširitve v .Net vključujejo standardne operatorje poizvedb LINQ, ki doda dodatne zmožnosti poizvedbe v System.Collections.IEnumerable in System.Collections.Generic.IEnumerable vrste. Upoštevajte, da lahko metode razširitve izkoristite za razširitev razreda ali vmesnika, vendar njihovih metod ne morete preglasiti. MSDN pravi: "Razširitvene metode vam omogočajo, da" dodate "metode obstoječim vrstam, ne da bi ustvarili nov izpeljani tip, jih ponovno prevedli ali kako drugače spremenili prvotni tip. Razširitvene metode so posebna vrsta statične metode, vendar se imenujejo, kot da so bile metode primerka za razširjeni tip. "

V bistvu je metoda razširitve posebna vrsta statične metode in vam omogoča, da obstoječi vrsti dodate funkcionalnost, tudi če nimate dostopa do izvorne kode vrste. Metoda razširitve je podobna drugi statični metodi, vendar ima kot prvi parameter referenco "to". Kateri koli vrsti lahko dodate toliko načinov razširitve. Najpomembneje pa je, da lahko tudi vrste vrednosti dodate metode razširitve.

Pri delu z metodami podaljšanja upoštevajte naslednje:

  • Metoda razširitve mora biti statična metoda
  • Metoda razširitve mora biti znotraj statičnega razreda - razred ima lahko katero koli ime
  • Parameter v razširitveni metodi mora vedno imeti ključno besedo "this" pred tipom, za katerega je treba klicati metodo

Upoštevajte, da če določite metodo razširitve za tip, ki ima enak podpis kot katera koli druga metoda tipa, ki ga razširjate, metoda razširitve ne bo nikoli poklicana.

Programiranje razširitvenih metod v jeziku C #

V tem poglavju bomo raziskali, kako programirati razširitvene metode s pomočjo C #. Naslednji seznam kod ponazarja, kako izgleda metoda razširitve.

javni statični razred StringExtensions

    {

javni statični bool IsNumeric (ta niz str)

        {

dvojni izhod;

vrni double.TryParse (str, izhodni izhod);

        }

    }

Upoštevajte prvi parameter metode razširitve. Kot smo že omenili, mora biti katera koli metoda razširitve statična in mora imeti ključno besedo "this" pred parametrom, za katerega želite, da se metoda pokliče. Ko na seznamu parametrov določite ključno besedo "this" tako, kot je bila prikazana v zgornjem primeru, prevajalniku sporočite, da je za razred nizov definirana metoda razširitve.

Tukaj je opisano, kako lahko za primerek niza uporabite razširitveno metodo IsNumeric.

statična praznina Main (string [] args)

        {

niz str = "100";

if (str.IsNumeric ())

Console.WriteLine ("Predmet niza z imenom str vsebuje številsko vrednost.");

Console.Read ();

        }

Ko zaženete zgornji program, se v oknu konzole prikaže sporočilo ("Nizni objekt z imenom str vsebuje številsko vrednost."

Z razširitvenimi metodami lahko vbrizgate novo funkcionalnost prek metod v tip, razen če je treba spremeniti, izpeljati ali ponovno prevesti prvotni tip. Kot sem že omenil, se metode razširitve lahko uporabljajo tudi za vrste vrednosti. Poglejmo, kako je to mogoče doseči s primerom.

Naslednji razred z imenom IntegerExtensions vsebuje razširitveno metodo z imenom IsEven, ki vrne true, če je celo število, za katero je poklicano, sodo, sicer false.

javni statični razred IntegerExtensions

    {

javni statični bool IsEven (ta int i)

        {

vrnitev ((i% 2) == 0);

        }

    }

Tukaj je opisano, kako lahko za celo število uporabite razširitveno metodo IsEven.

int n = 2;

if (n.IsEven ())

Console.WriteLine ("Vrednost celotnega števila je sodo.");

$config[zx-auto] not found$config[zx-overlay] not found