C# Generics (Dansk)

0 Comments

generisk betyder den generelle form, ikke specifik. I C# betyder generisk ikke specifik for en bestemt datatype.

c# giver dig mulighed for at definere generiske klasser, grænseflader, abstrakte klasser, felter,metoder, statiske metoder, egenskaber, begivenheder, delegerede og operatører ved hjælp af parameteren type og uden den specifikke datatype. En typeparameter er en pladsholder for en bestemt type, der er angivet, når der oprettes en forekomst af den generiske type.

en generisk type erklæres ved at angive en typeparameter i vinkelbeslag efter et typenavn, f. eks., TypeName<T>, hvor T er en type parameter.

generisk klasse

generiske klasser defineres ved hjælp af en typeparameter i vinkelparenteser efter klassens navn. Følgende definerer en generisk klasse.

Eksempel: Define Generiske Klasse

Ovenfor, DataStore er der en generisk klasse., T kaldes type parameter, der kan bruges som en type af felter, egenskaber, metode parametre, retur-typer, og de delegerede i DataStore class. For eksempel er Data generisk egenskab, fordi vi har brugt en typeparameter T som dens type i stedet for den specifikke datatype.

Bemærk
Det er ikke nødvendigt at bruge T som en type parameter. Du kan give et navn til en type parameter., Generelt bruges T, når der kun er en type parameter. Det anbefales at bruge en mere læsbar type parameter navn som pr krav som TSession TKey TValue osv. Få mere at vide om retningslinjer for navngivning af Typeparametre

Du kan også definere flere typeparametre adskilt af et komma.

Instantiating Generic Class

Du kan oprette en forekomst af generiske klasser ved at angive en faktisk type i vinkelbeslag., Følgende opretter en forekomst af den generiske klasse DataStore.

ovenfor specificerede vi string indtast vinkelbeslagene, mens du opretter en forekomst. Så, T vil blive erstattet med en string type, hvor T bruges i hele klassen på compile-time. Derfor ville typen af Data ejendom være en string.

følgende figur illustrerer, hvordan generika fungerer.,

Du kan tildele en streng værdi Data ejendommen. Forsøger at tildele andre værdier end string vil resultere i en kompileringstid fejl.

Du kan angive de forskellige datatyper for forskellige objekter, som vist nedenfor.

annonce

generiske Klassekarakteristika

  • en generisk klasse øger genanvendeligheden. Jo flere type parametre betyder mere genanvendelige bliver det., Men for meget generalisering gør kode vanskelig at forstå og vedligeholde.
  • en generisk klasse kan være en base klasse til andre generiske eller ikke-generiske klasser eller abstrakte klasser.
  • en generisk klasse kan udledes af andre generiske eller ikke-generiske grænseflader, klasser eller abstrakte klasser.

generiske felter

en generisk klasse kan omfatte generiske felter. Det kan dog ikke initialiseres.

Eksempel: Generiske Felt

følgende erklærer en generisk array.,

Eksempel: Generiske Array

Generiske Metoder

En metode, erklæret med type parametre for sin tilbagevenden type eller parametre kaldes en generisk metode.

ovenfor erAddorUpdate()ogGetData() metoderne generiske metoder. Den faktiske datatype for item parameteren vil blive specificeret på tidspunktet for instantiering afDataStore<T> klasse, som vist nedenfor.,

den generiske parametertype kan bruges med flere parametre med eller uden ikke-generiske parametre og returtype. Følgende er gyldige generisk metode overbelastning.

en ikke-generisk klasse kan omfatte generiske metoder ved at angive en typeparameter i vinkelbeslag med metodenavnet, som vist nedenfor.

fordele ved generika

  1. generika øger genanvendelsen af koden. Du don ” t nødt til at skrive kode til at håndtere forskellige datatyper.
  2. generika er typesikker., Du får kompileringstidsfejl, hvis du forsøger at bruge en anden datatype end den, der er angivet i definitionen.
  3. generisk har en præstation fordel, fordi det fjerner mulighederne for boksning og UnBo .ing.


Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *