C # Generics

0 Comments

generiek betekent de algemene vorm, niet specifiek. In C# betekent generiek niet specifiek voor een bepaald gegevenstype. met

c# kunt u generieke klassen, interfaces, abstracte klassen, velden,methoden, statische methoden, eigenschappen, gebeurtenissen, gedelegeerden en operators definiëren met behulp van de parameter type en zonder het specifieke gegevenstype. Een type parameter is een plaatshouder voor een bepaald type opgegeven bij het maken van een instantie van het generieke type.

een generiek type wordt gedeclareerd door een typeparameter in hoekhaken achter een typenaam op te geven, bijv., TypeName<T> waarbij T een typeparameter is.

Generieke Klasse

Generieke klassen worden gedefinieerd met behulp van een typeparameter in hoekhaken achter de klassenaam. Het volgende definieert een generieke klasse.

voorbeeld: definieer Generieke Klasse

hierboven is de DataStoreeen generieke klasse., T wordt type parameter genoemd, die kan worden gebruikt als een type van velden, eigenschappen, methodeparameters, return types, en gedelegeerden in de DataStore klasse. Bijvoorbeeld, Data is generieke eigenschap omdat we een type parameter T als zijn type hebben gebruikt in plaats van het specifieke gegevenstype.

Note
het is niet vereist om T als een type parameter te gebruiken. U kunt elke naam geven aan een type parameter., Over het algemeen wordt T gebruikt wanneer er slechts één typeparameter is. Het wordt aanbevolen om een meer leesbare parameter naam te gebruiken zoals TSession, TKey, TValue etc. Meer informatie over type Parameter Naming Guidelines

u kunt ook meerdere type parameters definiëren, gescheiden door een komma.

instantiating Generic Class

u kunt een instantie van generieke klassen maken door een feitelijk type tussen hoekhaken op te geven., Het volgende maakt een instantie aan van de generieke klasse DataStore.

hierboven hebben we het stringtype tussen de hoekhaken gespecificeerd tijdens het aanmaken van een instantie. Dus, T zal worden vervangen door een string type waar T wordt gebruikt in de hele klasse tijdens het compileren. Daarom zou de eigenschap Data een stringzijn.

de volgende figuur illustreert hoe generica werkt.,

u kunt een tekenreekswaarde toewijzen aan de eigenschap Data. Proberen om andere waarden dan string toe te wijzen zal resulteren in een compilatie-tijd fout.

u kunt de verschillende gegevenstypen voor verschillende objecten opgeven, zoals hieronder getoond.

advertentie

Generieke Klasse kenmerken

  • een generieke klasse verhoogt de herbruikbaarheid. Hoe meer type parameters betekenen meer herbruikbaar het wordt., Echter, te veel generalisatie maakt code moeilijk te begrijpen en te onderhouden.
  • een generieke klasse kan een basisklasse zijn voor andere generieke of niet-generieke klassen of abstracte klassen.
  • een generieke klasse kan worden afgeleid van andere generieke of niet-generieke interfaces, klassen of abstracte klassen.

Generieke velden

een generieke klasse kan generieke velden bevatten. Het kan echter niet worden geïnitialiseerd.

voorbeeld: generiek veld

de volgende declareert een generische array.,

voorbeeld: generische Array

Generieke methoden

een methode die is gedeclareerd met de typeparameters voor zijn return type of parameters wordt een generieke methode genoemd.

hierboven zijn de methoden AddorUpdate() en GetData() generieke methoden. Het werkelijke gegevenstype van de item parameter zal worden gespecificeerd op het moment dat de DataStore<T> klasse wordt geïnstalleerd, zoals hieronder wordt getoond.,

het generieke parameter type kan worden gebruikt met meerdere parameters met of zonder niet-generieke parameters en return type. De volgende regels zijn geldig generieke methode overbelasting.

een niet-generieke klasse kan generieke methoden bevatten door een typeparameter op te geven tussen hoekhaken met de methodenaam, zoals hieronder getoond.

voordelen van generica

  1. Generica verhogen de herbruikbaarheid van de code. U hoeft geen code te schrijven om verschillende gegevenstypen te verwerken.
  2. Generica zijn typeveilig., Je krijgt fouten in de compilatietijd als je een ander gegevenstype probeert te gebruiken dan het type dat in de definitie is opgegeven.
  3. Generic heeft een prestatievoordeel omdat het de mogelijkheden van boksen en unboxen verwijdert.


Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *