C # túlterhelt módszerek - priler studio

C # túlterhelt módszerek - priler studio

Az első lépés az, hogy meghatározza a sorrendet, túlterhelt módszerek és hogyan kell dolgozni velük.

A túlterhelt módszereket vezet az út, és a polimorfizmust valamint virtuális módszerek lehetővé teszik, hogy felülbírálja ugyanazzal a módszerrel, az azonos nevű.







Hogy pontosak legyünk, a túlterhelt módszerek nem írják felül egy speciális eljárással, de csak kiegészíti azt a már módosított másolata.

Azonnal példát, hogy a kód tenné a dolgokat világosabb.

using System;
használatával System.Collections.Generic;
használatával System.Linq;
segítségével System.Text;

névtér ConsoleApplication5
<
osztály Program
<
static void Main (string [] args)

//
some_func ();
some_func ( "Hello erővel");

public static void some_func ()

Console.WriteLine ( "Got nincs szöveg");

public static void some_func (string some_text)

Console.WriteLine ( "Got szöveget." + Some_text);

A fenti példa megjeleníti a következő sort:

Megvan szöveget. szia erejével

Ie hoztunk létre két egyforma módszer nevét, de különböző bemeneti paramétereket.

Ezt nevezik a módszer túlterhelés, amikor az egyik módszer különböző ötleteket.

De hogyan kell őket más?

Egyszerűen, ezek eltérnek a bemeneti paramétereket.

És egészen pontosan a típusú bemeneti paraméterek, illetve azok mennyiségét.

Azaz, akkor állapítsa meg legalább 100.500 azokat a módszereket, de meg kell különböztetni száma bemeneti paraméterek, illetve típus szerint.

A következő példa szemlélteti ezt világosan.

using System;
használatával System.Collections.Generic;
használatával System.Linq;
segítségével System.Text;

névtér ConsoleApplication5
<
osztály Program
<
static void Main (string [] args)

//
some_func ();
some_func ( "Hello erővel");
some_func ( "Hello erővel", "Hogy vagy?");
some_func (100, 500);

public static void some_func ()

Console.WriteLine ( "Got nincs szöveg");


public static void some_func (string some_text)

Console.WriteLine ( "Got szöveget." + Some_text);


public static void some_func (string some_text, string some_text2)

Console.WriteLine ( "van két vonal." + Some_text + "-és-" + some_text2);


public static void some_func (int some_text, int some_text2)

Console.WriteLine ( "van két szám." + Some_text + "-és-" + some_text2);

Futtatása után a fenti kódot, hogy a következő feliratok jelennek meg a képernyőn:

Megvan szöveget. szia erejével

Van két sorban. Szia Lehet -és- Hogy van?







Megvan a két számot. 100 500 -és-

Mint látható, bejelentettük 4 azonos módszerrel, de különböző paraméterekkel.

C # maga tudja, hogy mely paraméterek és hány telt el, majd felhívja az, ami megfelel a fajta ezen paraméterek és / vagy számát.

Miért is?

Először is, nagyon kényelmes.

Másodszor, javítja a kódot.

Harmadszor, a túlterhelés nem csak egyszerű technikákkal, hanem az osztály konstruktora, de ezen az alábbi cikkben.

A még szemléletes példa, mi adjuk a nyelv C.

A C ABS () módszer, amely visszaadja az abszolút értéke egy egész szám.

Továbbá, C LABS () módszer, amely visszaadja az abszolút értéke egy nagy egész.

És C FAB () metódus, amely visszaadja az abszolút értéke lebegőpontos normál (single) pontossággal.

De, sőt, mind a három funkciót látja el egy és ugyanazt a feladatot, csak abban különbözik a bemeneti paramétereket.

Ez azért van, mert a C nem támogatja a túltöltött módszerek és az egyes funkciók és / vagy egy-egy példányt, hogy hívja meg egy egyedi nevet.

C # csak egy funkció ABS () in System névtér Math osztályában, és ez a funkció funkciója a három felsorolt ​​C, ezért a képesség, hogy terhelje módszerek annyira kényelmes.

Mit rejt a piszok?

C # képes megkülönböztetni a túlterhelt függvények és általában lehetővé teszi számukra, hogy a munka révén az aláírásokat.

Aláírások képviseli a metódus nevét és paramétereit, a számát és típusát.

Ily módon egy C osztályú # nem lehet egy és ugyanazt a módszert az azonos paraméterek számát és / vagy a paraméter típusok.

Típus által visszaadott nem szerepel az aláírás, ezért nincs hatással a döntést a C #.

Továbbá, a C # a határozat nem érinti a params módosítót.

Van egy kivitelező osztály túlterhelését.

A tervező egy bizonyos osztálya is túlterhelt.

védett húr animal_name;

nyilvános Állatok ()
<
animal_name = "nem definiált";
Console.WriteLine ( „Nincs neve állat”);
>

nyilvános Állatok (string name)
<
animal_name = név;
Console.WriteLine ( "Animal név" + neve);
>

nyilvános virtuális void Print_Name ()
<
//
Console.WriteLine ( "Animal név." + Animal_name);
>
>

És hozzon létre két esetben egy osztály:

static void Main (string [] args)

//
Állatok kutya = new Animals ();
Állatok cat = new Állatok ( "Jonny Catsvill");
Console.ReadKey ();

A következő szöveg jelenik meg a konzolon:

Nincs neve állati

Állat neve. Jonny Catsvill

De ez csak egy egyszerű példa, az újraindítás tervezők hasznos, például, hogy a mércét értékek és a mezők nem megkettőzése ugyanazt a kódot.

Például, az egyik túlterhelt van konstruktor hívja a másik, hogy túlterheli a másolatot.

védett húr animal_name;

nyilvános Animals (). ezt ( "Kvon Cho Wong")
<
>

nyilvános Állatok (string name)
<
animal_name = név;
Console.WriteLine ( "Animal név" + neve);
>

nyilvános virtuális void Print_Name ()
<
//
Console.WriteLine ( "Animal név." + Animal_name);
>
>

Ezzel a hívás:

static void Main (string [] args)

//
Állatok kutya = new Animals ();
Állatok cat = new Állatok ( "Jonny Catsvill");
Console.ReadKey ();

Megjeleníti a következő szöveg lép:

Állat neve. Kvon Cho Wong

Állat neve. Jonny Catsvill

Ha kíváncsi, hogy a szervezet végzi az „üres” a tervező, akkor a válasz - igen, van, mivel ez a kialakítás elvén működik az öröklés.

Azaz, ha az alkotók például állatok, és nem adja át semmit a paraméterei, jelen esetben ez a design utal önmagát, és felszólítja a fenti eljárással, de elküldi az alapértelmezett érték, azaz ez okozza a másolat túlterhelt.

És miután egy túlterhelt példányt befejeződött, ellenőrzés ismét visszatér az „üres”, a tervező, és a teste kerül végrehajtásra.

Összefoglalva a cikket.

Itt van egy ilyen érdekes példa.

Mivel már Prayler. a legjobb, és élvezze a kódolás