Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 19862|Odgovoriti: 1

[Vir] Podrobno dedovanje funkcij .NET/C#

[Kopiraj povezavo]
Objavljeno na 14. 02. 2017 11:13:38 | | |
Opis:

Obstajata dva razreda, A in B, I A podeduje razred B, B pa je razred starša

Lastnosti TestAttribute sem nastavil v razredu A in razredu B...

Nato vzamemo značilnosti objekta in koda je naslednja:



Ugotovil sem, da je število rezultatov 1, atribut pa je atribut, ki ga nabere A, ne pa atribut, ki ga nabere B, kaj šele združen, zakaj je tako???


[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{}
Tu so štiri možne kombinacije:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false ]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false ]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true]  
Prvi primer:

Če poizvedujemo razred Derive (kasneje bomo videli, kako poizvedovati lastnosti razreda med izvajanjem), bomo ugotovili, da funkcija Pomoč ne obstaja, ker je podedovana lastnost nastavljena na false.

Drugi primer:

Enako kot v prvem primeru, ker je podedovano tudi nastavljeno na napačno.



Tretja situacija:

Za razlago tretjega in četrtega primera najprej dodajmo nekaj kode k izpeljanemu razredu:

[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{}
Zdaj poizvedimo s funkcijo Pomoč, lahko dobimo le lastnosti izpeljanega razreda, ker je podedovano nastavljeno na true, AllowMultiple pa na false. Zato je funkcija Pomoč osnovnega razreda preglasena s funkcijo pomoči izpeljanega razreda.

Četrta situacija:

Tukaj bomo ugotovili, da ima izpeljani razred tako funkcijo Help kot osnovni razred in svojo lastno funkcijo Help, ker je AllowMultiple nastavljen na true.







Prejšnji:Dodeljevanje C# med dvema objektnima lastnostma
Naslednji:Neujeta TypeError: a(...). starši(...). inSelf ni funkcija
 Najemodajalec| Objavljeno na 30. 03. 2017 09:35:49 |
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com