Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 19862|Svare: 1

[Kilde] .net/c# funksjonsarv i detalj

[Kopier lenke]
Publisert på 14.02.2017 11:13:38 | | |
Beskrivelse:

Det finnes to klasser, A og B, I A arver klasse B, og så er B foreldreklassen

Jeg har satt TestAttribut-egenskapene i henholdsvis klasse A og klasse B...

Ta deretter egenskapene til objektet, og koden er som følger:



Jeg fant ut at antall resultater er 1, og attributtet er attributtet satt av A, ikke attributtsettet av B, for ikke å snakke om sammenslått – hvorfor er det slik???


[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{}
Det finnes fire mulige kombinasjoner her:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = falsk, Inherited = false ]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false ]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = falsk, Inherited = true ]  
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true ]  
Det første tilfellet:

Hvis vi spør Derive-klassen (vi skal se senere hvordan man spør en klasses egenskaper under kjøring), vil vi finne at Help-funksjonen ikke eksisterer fordi den arvede egenskapen er satt til falsk.

Andre tilfelle:

Samme som i det første tilfellet, fordi inherited også settes til falsk.



Den tredje situasjonen:

For å forklare det tredje og fjerde tilfellet, la oss først legge til litt kode i den avledede klassen:

[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{}
La oss nå spørre i Hjelp-funksjonen, vi kan bare hente egenskapene til den avledede klassen, fordi inherited settes til true, men AllowMultiple er satt til false. Derfor overstyres Hjelpefunksjonen til basisklassen av hjelpefunksjonen til den avledede klassen.

Den fjerde situasjonen:

Her vil vi finne at den avledede klassen har både Help-funksjonen til basisklassen og sin egen Help-funksjon, fordi AllowMultiple er satt til true.







Foregående:C#-tildeling mellom to objektegenskaper
Neste:Ufanget typefeil: a(...). foreldre(...). ogSelvet er ikke en funksjon
 Vert| Publisert på 30.03.2017 09:35:49 |
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com