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