|
|
Geplaatst op 28-01-2019 16:03:40
|
|
|
|

1. Wat is generiek?
Generieke zijn nieuwe syntaxis geïntroduceerd in C# 2.0, niet syntaxissuiker, maar functies die worden geleverd door framework-upgrades in 2.0.
Wanneer we programma's programmeren, komen we vaak modules tegen met zeer vergelijkbare functies, maar ze verwerken verschillende data. Maar we hebben geen andere keuze dan meerdere methoden apart te schrijven om verschillende datatypes te verwerken. Op dit moment is de vraag: is er een manier om dezelfde methode te gebruiken om met verschillende soorten parameters om te gaan? De opkomst van generieke middelen is specifiek ontworpen om dit probleem op te lossen.
2. Waarom generieke middelen gebruiken
Laten we het volgende voorbeeld bekijken:
Resultaat:
Uit bovenstaande resultaten kunnen we zien dat deze drie methoden dezelfde functies hebben, behalve de verschillende parameters die ze passeren. Ten tijde van versie 1.0 bestond er geen concept van generieke producten, dus wat moest je doen. Ik geloof dat veel mensen zullen denken aan de overerving van een van de drie belangrijkste kenmerken van OOP; we weten dat in C# het object de basisklasse van alle typen is, en de bovenstaande code is als volgt geoptimaliseerd:
Resultaat:
Uit bovenstaande resultaten blijkt dat het gebruik van het Object-type aan onze eisen voldoet en de herbruikbaarheid van de code oplost. Sommige mensen vragen zich misschien af waarom het mogelijk is om int, string, enzovoort door te geven terwijl het als objecttype is gedefinieerd? Er zijn twee redenen:
1. Het objecttype is de ouderklasse van alle typen.
2. Door overerving hebben subklassen alle attributen en gedragingen van de ouderklasse, en waar de ouderklasse voorkomt, kan deze worden vervangen door subklassen.
Maar de bovenstaande objecttype-methode brengt een ander probleem met zich mee: boxen en unboxen kunnen de prestaties van het programma verminderen.
Microsoft introduceerde generieke exemplaren in C# 2.0, die bovenstaande problemen zeer goed kunnen oplossen.
3. Generieke typeparameters
In een generieke type- of methodedefinitie is een typeparameter een tijdelijke aanduiding die door de client wordt gespecificeerd voor een specifiek type wanneer deze een variabele van het generieke type instantieert. De generieke klasse (GenericList<T>) kan niet worden gebruikt zoals het is omdat het geen echt type is; Het is meer een blauwdruk voor types. Om GenericList te gebruiken<T>, moet clientcode een constructtype declareren en instansiëren door de typeparameter binnen hoekhaken te specificeren. Het typeargument voor deze specifieke klasse kan elk type zijn dat de compiler herkent. Je kunt een willeloos aantal constructtype-instanties maken, elk met een andere typeparameter.
De code in het bovenstaande voorbeeld kan als volgt worden aangepast:
Call:
Resultaten van de show:
|
Vorig:.NET Core BestandsprovidersVolgend:MySQL-databasenaam, tabelnaam en veldnaam-query
|