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

Utsikt: 17614|Svare: 1

[Kommunikasjon] C# generiske eksempler forklares i detalj

[Kopier lenke]
Publisert på 28.01.2019 16:03:40 | | | |
1. Hva er generisk?

Generiske er ny syntaks introdusert i C# 2.0, ikke syntakssukker, men funksjoner gitt av rammeverksoppgraderinger i 2.0.

Når vi programmerer programmer, møter vi ofte moduler med svært like funksjoner, men de håndterer ulike data. Men vi har ikke noe annet valg enn å skrive flere metoder separat for å håndtere ulike datatyper. På dette tidspunktet er spørsmålet, finnes det en måte å bruke samme metode for å håndtere ulike typer parametere? Fremveksten av generika er spesielt utformet for å løse dette problemet.

2. Hvorfor bruke generika

La oss se på følgende eksempel:
Utfall:

Fra resultatene ovenfor kan vi se at disse tre metodene har de samme funksjonene bortsett fra de forskjellige parameterne de passerer. På tidspunktet for versjon 1.0 fantes det ikke noe konsept med generiske varianter, så hva skulle man gjøre. Jeg tror mange vil tenke på arven av en av de tre hovedfunksjonene til OOP; vi vet at i C# er objektet basisklassen for alle typer, og koden ovenfor er optimalisert som følger:
Utfall:

Fra resultatene ovenfor kan vi se at bruk av Objekt-typen oppfyller våre krav og løser gjenbrukbarheten av koden. Noen kan spørre hvorfor det er mulig å sende inn int, string osv. når det er definert som en objekttype? Det er to grunner:

1. Objekttypen er foreldreklassen til alle typer.

2. Gjennom arv har underklasser alle attributtene og atferdene til foreldreklassen, og der foreldreklassen dukker opp, kan den erstattes av underklasser.

Men objekttypemetoden ovenfor bringer et annet problem: innpakning og unboxing kan redusere programmets ytelse.

Microsoft introduserte generiske i C# 2.0, som kan løse de ovennevnte problemene svært godt.

3. Generiske typeparametere

I en generisk type- eller metodedefinisjon er en typeparameter en plassholder spesifisert av klienten for en spesifikk type når den instansierer en variabel av den generiske typen. Den generiske klassen (GenericList<T>) kan ikke brukes som den er fordi den ikke er en sann type; Det er mer som en blåkopi for typer. For å bruke GenericList <T>må klientkoden erklære og instansiere en konstruksjonstype ved å spesifisere typeparameteren innenfor vinkelparenteser. Typeargumentet for denne spesifikke klassen kan være hvilken som helst type som kompilatoren gjenkjenner. Du kan lage et hvilket som helst antall konstrukttypeinstanser, hver med en forskjellig typeparameter.

Koden i eksempelet ovenfor kan endres som følger:
Ring:
Showresultater:






Foregående:.NET kjernefilleverandører
Neste:MySQL-databasenavn, tabellnavn og feltnavnsspørring
Publisert på 29.01.2019 04:08:13 |
Veldig bra, grundig, og de grunnleggende tingene bør gjennomgås mer
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