Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 19862|Vastaus: 1

[Lähde] .net/c#-ominaisuuksien periytyminen yksityiskohtaisesti

[Kopioi linkki]
Julkaistu 14.2.2017 11.13.38 | | |
Kuvaus:

On olemassa kaksi luokkaa, A ja B, I A perii luokan B, ja B on emoluokka

Olen asettanut TestAttribute-ominaisuudet luokkiin A ja luokkaan B vastaavasti...

Sitten otetaan objektin ominaisuudet, ja koodi on seuraava:



Huomasin, että tulosten määrä on 1, ja attribuutti on A:n määrittämä attribuutti, ei B:n määrittämä attribuutti, saati sitten yhdistetty, miksi näin on???


[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{}
Tässä on neljä mahdollista yhdistelmää:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = epätosi, peritty = epätosi]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = epätosi]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = epätosi, Peritty = tosi]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true]  
Ensimmäinen tapaus:

Jos kysymme Derive-luokkaa (katsotaan myöhemmin, miten luokan ominaisuuksia haetaan ajonaikaisesti), huomaamme, että Help-ominaisuutta ei ole, koska peritty ominaisuus on asetettu vääräksi.

Toinen tapaus:

Sama kuin ensimmäisessä tapauksessa, koska peritty on myös asetettu vääräksi.



Kolmas tilanne:

Selittääksemme kolmannen ja neljännen tapauksen, lisätään ensin koodia johdettuun luokkaan:

[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{}
Nyt kysytään Help-ominaisuudesta, saamme vain johdetun luokan ominaisuudet, koska inherited on asetettu tosi, mutta AllowMultiple on asetettu false. Näin ollen perusluokan Help-ominaisuus ohitetaan johdetun luokan help-ominaisuudella.

Neljäs tilanne:

Tässä löydämme, että johdetulla luokalla on sekä perusluokan Help-ominaisuus että oma Help-ominaisuutensa, koska AllowMultiple on asetettu true-arvoon.







Edellinen:C#-määritys kahden objektin ominaisuuden välillä
Seuraava:Uncaught TypeError: a(...). vanhemmat(...). ja Minä ei ole funktio
 Vuokraisäntä| Julkaistu 30.3.2017 9.35.49 |
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com