Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 19862|Atsakyti: 1

[Šaltinis] Išsami .net/c# funkcijų paveldėjimo informacija

[Kopijuoti nuorodą]
Paskelbta 2017-02-14 11:13:38 | | |
apibūdinimas:

Yra dvi klasės, A ir B, I A paveldi B klasę, o tada B yra pirminė klasė

Aš nustatiau TestAttribute savybes atitinkamai A ir B klasėse...

Tada paimkite objekto charakteristikas, o kodas yra toks:



Radau, kad rezultatų skaičius yra 1, o atributas yra atributas, kurį nustato A, o ne atributas, kurį nustato B, jau nekalbant apie sujungtą, kodėl taip yra???


[Help("BaseClass")] publicclass base{} publicclass išvesti : base{}
Čia yra keturi galimi deriniai:

[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 ]  
Pirmasis atvejis:

Jei pateiksime užklausą klasei Derive (vėliau pamatysime, kaip vykdyti klasės ypatybių užklausą), pamatysime, kad žinyno funkcijos nėra, nes paveldėta ypatybė nustatyta kaip false.

Antrasis atvejis:

Tas pats kaip ir pirmuoju atveju, nes paveldėtas taip pat nustatytas kaip false.



Trečioji situacija:

Norėdami paaiškinti trečią ir ketvirtą atvejus, pirmiausia pridėkime šiek tiek kodo prie išvestinės klasės:

[Help("BaseClass")] publicclass base{}[Help("DeriveClass")] publicclass išvesti : base{}
Dabar užklauskime žinyno funkcijos, galime gauti tik išvestinės klasės ypatybes, nes paveldėta nustatyta kaip teisinga, o AllowMultiple nustatyta kaip klaidinga. Todėl pagrindinės klasės žinyno funkciją pakeičia išvestinės klasės žinyno funkcija.

Ketvirtoji situacija:

Čia rasime, kad išvestinė klasė turi ir pagrindinės klasės žinyno funkciją, ir savo žinyno funkciją, nes AllowMultiple nustatyta kaip teisinga.







Ankstesnis:C# priskyrimas tarp dviejų objektų ypatybių
Kitą:Uncaught TypeError: a(...). tėvai (...). irSelf nėra funkcija
 Savininkas| Paskelbta 2017-03-30 09:35:49 |
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com