Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 17614|Svar: 1

[Kommunikation] C# generiske eksempler forklares i detaljer

[Kopier link]
Opslået på 28/01/2019 16.03.40 | | | |
1. Hvad er generisk?

Generics er ny syntaks introduceret i C# 2.0, ikke syntakssukker, men funktioner leveret af framework-opgraderinger i 2.0.

Når vi programmerer programmer, støder vi ofte på moduler med meget lignende funktioner, men de håndterer forskellige data. Men vi har ikke andet valg end at skrive flere metoder separat for at håndtere forskellige datatyper. På nuværende tidspunkt er spørgsmålet, om der er en måde at bruge den samme metode til at håndtere forskellige typer parametre? Fremkomsten af generika er specifikt designet til at løse dette problem.

2. Hvorfor bruge generiske

Lad os se på følgende eksempel:
Udfald:

Ud fra ovenstående resultater kan vi se, at disse tre metoder har de samme funktioner bortset fra de forskellige parametre, de passerer. På tidspunktet for version 1.0 fandtes der ikke noget generisk koncept, så hvad skulle man gøre. Jeg tror, mange vil tænke på arven af en af de tre hovedfunktioner i OOP; vi ved, at i C# er objektet basisklassen for alle typer, og ovenstående kode er optimeret som følger:
Udfald:

Ud fra ovenstående resultater kan vi se, at brugen af Objekt-typen opfylder vores krav og løser genanvendeligheden af koden. Nogle spørger måske, hvorfor det er muligt at sende int, string osv. ind, når det er defineret som en objekttype? Der er to grunde:

1. Objekttypen er forældreklassen for alle typer.

2. Gennem arv har underklasser alle attributter og adfærd fra forældreklassen, og hvor end forældreklassen optræder, kan den erstattes af underklasser.

Men ovenstående objekttypemetode medfører et andet problem: indpakning og unboxing kan reducere programmets ydeevne.

Microsoft introducerede generiske i C# 2.0, som kan løse ovenstående problemer meget godt.

3. Generiske typeparametre

I en generisk type- eller metodedefinition er en typeparameter en pladsholder, som klienten specificerer for en specifik type, når den instansierer en variabel af den generiske type. Den generiske klasse (GenericList<T>) kan ikke bruges som den er, fordi den ikke er en ægte type; Det er mere som en blueprint for typer. For at bruge GenericList <T>skal klientkoden erklære og instansiere en konstruktionstype ved at angive typeparameteren inden for hjørneparenteser. Typeargumentet for denne specifikke klasse kan være enhver type, som compileren genkender. Du kan oprette et vilkårligt antal konstrukttype-instanser, hver med en forskellig typeparameter.

Koden i ovenstående eksempel kan ændres som følger:
Kald:
Showresultater:






Tidligere:.NET Core Filudbydere
Næste:MySQL-databasenavn, tabelnavn og feltnavn-forespørgsel
Opslået på 29/01/2019 04.08.13 |
Meget godt, grundigt, og de grundlæggende ting bør gennemgås mere
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com